Líderes
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/30/17 em todas áreas
-
Shop Admin Gesior 2012 (TFS 0.3.6 ~ 0.4, 1.0)
Shop Admin Gesior 2012 (TFS 0.3.6 ~ 0.4, 1.0)
Rodrigo94 e um outro reagiu a dezon por uma resposta no tópico
2 pontos[+] 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!!!2 pontos -
Script x players exp aumenta!
Script x players exp aumenta!
robi123 e um outro reagiu a Vodkart por uma resposta no tópico
2 pontosjá existe esse sistema no fórum, só procurar reclama que ngm ajuda mas não move um dedo pra ir nas seções procurar! Logo de cara achei na primeira página2 pontos -
HELP OPEN DOOR
HELP OPEN DOOR
KotZletY e um outro reagiu a Wakon por uma resposta no tópico
2 pontosSelf.UseItemFromGround(x, y , z)2 pontos -
Critical Skill System
Critical Skill System
joaopedrodepaiva reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, vejo que tem bastante gente procurando esse sisteminha que é praticamente igual ao dodge system, então eu decidi fazer visto que na realidade era só mudar 3 linhas kkkk em todo caso ta aí pra quem quiser: creaturescripts.xml: <!-- CRITICAL SYSTEM --> <event type="statschange" name="critical" event="script" value="critical.lua"/> creaturescripts\scripts\login.lua: --- CRITICAL SYSTEM ---- registerCreatureEvent(cid, "critical") if getPlayerStorageValue(cid, 48913) == -1 then setPlayerStorageValue(cid, 48913, 0) end creaturescritps\scripts\critical.lua: --[[Critical System ------------------------- By Night Wolf]] local lvlcrit = 48913 local multiplier = 1.5 function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) then if (getPlayerStorageValue(attacker, lvlcrit)*3) >= math.random (0,1000) then dano = math.ceil(value*(multiplier)) doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255) doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", 144) return false end end return true end lvlcrit é o storage que fica salvo o seu level de critical e multiplier é o multiplicador do dano para ataques críticos.. nesse caso um ataque critico vai ser 1,5 vezes maior doque um ataque normal (50% maior) Agora em actions.xml adicione: <action itemid="1294" script="criticalrock.lua"/> e em actions\scripts\criticalrock.lua adicione: --- CRITICAL System by Night Wolf local config = { effectonuse = 14, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 48913 -- storage que será verificado } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit then doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) doPlayerSendTextMessage(cid,22,"You've Leveled your Critical Skill to ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/"..config.levelscrit.."].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"You've already reached the MAX level of Critical Skill.\nCongratulations!!!!") return 0 end return 1 end Feito isso tá pronto, pra editar o item que dá a skill de critical vc edita no actions.xml mesmo: <action itemid="1294" << ID do item que será usado pra dar a skill. A config tá bem simples: effectonuse = 14, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 48913 -- storage que será verificado. Lembrando que cada pedra utilizada dará 0,3% a mais de chance.. 10 pedras dão 3% de chance de dar critico a cada ataque e 100 pedras (NIVEL MÁXIMO PADRÃO) dará 30% de chance de dar crítico em cada ataque. Espero que vcs gostem, qualquer coisa deixem os comentários aqui. Obs: aqui tá uma foto Note que esse script só funciona em players, se vc quiser que funcione em monstros você vai ter que abrir um por um todos os monstros do server e colocar essa tag aqui: <script> <event name="critical"/> </script> coloque antes de </monster> Minha dica: coloquem apenas no Trainer pra que o player consiga ver que ele tem o critical e quanto ele tira e deixem avisado que o sistema só vai funcionar em players.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 -
[8.6 TFS 3.6] Spell Ghost Invisible
[8.6 TFS 3.6] Spell Ghost Invisible
diarmaint reagiu a abugaduniga por uma resposta no tópico
1 pontoAe galera fiz esse spell aqui no meu ot, funcionou 100% Shadow Walker Spell By Abugaduniga (Ghost mode spell) Client Versão 8.6 OT TFS 4.0 Porem, acredito que serve em geral! Sei que muita gente vai me agradecer por isso 1º Passo: Abra o Spells.XML e adicione o seguinte código: <!-- Shadow Walker by Abuga --> <instant name="Shadow Walker" words="utana vis" lvl="40" manapercent="70" exhaustion="2000" needlearn="0" event="script" value="support/shadow.lua"> <vocation id="41"/> </instant> NOTA: aonde está manapercent="70" pode ser trocado por mana="VALOR", Deixe só 1 dos dos para não dar problemas! 2º Passo Crie na pasta \data\spells\scripts\support um arquivo chamado Shadow.lua e coloque o seguinte código dentro: function onCastSpell(cid, var) parameters = {cid=cid} setPlayerGroupId(cid, 2) doCreatureExecuteTalkAction(cid, "/ghost", TRUE) addEvent(talk, 5000, parameters) return true end function talk(parameters) doCreatureExecuteTalkAction(parameters.cid, "/ghost", TRUE) setPlayerGroupId(parameters.cid, 1) end NOTA: Na linha onde se encontra "addEvent(talk, 5000, parameters)" Troque 5000 por quantos segundos vc deseja que este spell dure (1 seg = 1000) Na linha onde se encontra "setPlayerGroupId(cid, 2)" ela deixará o player com o groupid de senior tutor. Infelismente é o único jeito que descobri para que players não te encherguem ao usar, pois a condição ghost afeta apenas quem é inferior ao groupid do player. 3º passo No arquivo login.lua (\data\creaturescripts\scripts) Adicione o seguinte código logo abaixo de "function onLogin(cid)" -- Login Cancel Invisible -- if(getPlayerGroupId(cid) == 2) then setPlayerGroupId(cid, 1) end if(isPlayerGhost(cid)) then doCreatureExecuteTalkAction(cid, "/ghost", TRUE) end -- end -- NOTA: Isto serve para caso o server caia, o player que está na condição ghost vire groupid 0(player) e cancele o ghostmode ao login. É importante ressaltar também, que caso algum GM/GOD esteja ghostmode e de logout, quando der login voltará a ser visível apenas, ele NÃO terá o groupid modificado! então pode usar de boas 4º passo Teste, compartilhe e me de REP+ xD Tem apenas um Bug, que caso seu server de crash ou caia enquanto o player esteja ghostmode, é que quando ele entrar os players em volta dele tomam crash, mais apenas no primeiro login.1 ponto -
Tibia Edit, Aumentar limite dos sprites e effects do Old Tibia.
Software que aumenta os sprites e o effects do Old Client Funciona na versão 8.54 Explicando seu uso. No botão Buscar Client, você vai ter que procurar pelo client que você quer modificar, que nesse caso é o executável. Marque as opções que você quer que seja adicionada ao seu cliente aperte em Modificar Client. Na pasta do seu client vai ser criado uma pasta chamada de Tibia Edit Client. Nessa pasta vai ter o client modificado e mais alguns arquivos que vai depender das opções marcadas. Se você marcou Aumentar sprites e Aumentar effects vai ter seu client modificado, tibiaedit.dll, Tibia.dat, extedend.dll. Se você marcou só Aumentar sprites, vai ter seu client modificado, Tibia.dat e extended.dll. Se você marcou só Aumentar effects, vai ter seu client modificado e tibiaedit.dll. Aumentar effects Ele vai tirar o limite de 255 efects do seu client, você vai ter que fazer as alterações no servidor para funcionar. Tutorial ensinando como modificar nas source do servidor. Aumentar sprites Você poderá usar Tibia.str e Tibia.dat extendido, mas você deve ter percebido que já vem um Tibia.dat, não apague ele, você vai ter que que mudar o nome do seu Tibia.dat extedentido para dat2.dat e coloque na pasta criada. Você vai ter que colocar o resto dos arquivos que são Tibia.spr, Tibia.dat, Tibia.pic, se a opção Aumentar sprite foi marcada, seu Tibia.dat tem que ser renomeado para dat2.dat, se seu computador não mostra a extensão dos arquivos, só colocar dat2, mas se der algum erro, tente o dat2.dat. A dll extended.dll não sei quem foi que criou, o meu software está apenas colocando ela para executar junto com o client. A dll tibiaedit.dll, foi desenvolvida por mim, o meu software faz ela executar junto com o client. Imagem do software Download Clique aqui para baixar o software Virus total Virus total do software Software ainda está em desenvolvimento, pode ter alguns bugs, informe se acontecer algum. Abra o software como administrador. Quando o tibia é modificado é recomendado que comece abrir ele como adiministrador, porque tem vezes que não abre, porque a dll tibiaedit.dll pode ter problemas em mudar os address no tibia, e abrindo como administrador esse problema é evitado. Não deixe de agradecer. Pessoas que querem para o 8.60, estou muito ocupado, mas atualizarei o software em breve, já atualizei a Dll, só vou atualizar o software.1 ponto
-
[CREATUREEVENT] Mensagem no Default quando um player for morto por outro
[CREATUREEVENT] Mensagem no Default quando um player for morto por outro
Thenebrozo reagiu a Luquinha por uma resposta no tópico
1 pontoFunção: Quando um jogador matar outro, irá aparecer em seu default uma mensagem avisando. E a mensagem será, por exemplo: Lucas acaba se morto no nivel 90 para o Luquinha. Vamos lá! 1. Acesse: data/creaturescripts/scripts e abra o arquivo deathbroadcast.lua. Coloque isto: function onKill(cid, target, lastHit) local str = "O player %s acaba de ser morto no nível %d por %s" if isPlayer(cid) and isPlayer(target) then doBroadcastMessage(str:format(getCreatureName(target), getPlayerLevel(target), getCreatureName(cid)), 27) end return true end 2. Agora vá em data/creaturescript e abra o arquivo creaturescript.xml. Em seguida, coloque isto: <event type="kill" name="DeathBroadCast" event="script" value="deathbroadcast.lua"/> 3. Vá em data/creaturescripts/scripts e abra o arquivo login.lua. Terá lá registerCreatureEvent, coloque este código abaixo disso: registerCreatureEvent(cid, "DeathBroadCast") Para você alterar as cores do aviso que irá aparecer a cada morte, coloque este: MESSAGE_FIRST = 18 MESSAGE_STATUS_CONSOLE_RED = MESSAGE_FIRST MESSAGE_EVENT_ORANGE = 19 MESSAGE_STATUS_CONSOLE_ORANGE = 20 MESSAGE_STATUS_WARNING = 21 MESSAGE_EVENT_ADVANCE = 22 MESSAGE_EVENT_DEFAULT = 23 MESSAGE_STATUS_DEFAULT = 24 MESSAGE_INFO_DESCR = 25 MESSAGE_STATUS_SMALL = 26 MESSAGE_STATUS_CONSOLE_BLUE = 27 MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_BLUE1 ponto -
Solução ElfBot não abre corpos (AutoLoot)
Solução ElfBot não abre corpos (AutoLoot)
nikolasj reagiu a Makhai Drakon por uma resposta no tópico
1 pontoFala galera hoje vim aqui solucionar a duvida que muitos tem que e quando o ElfBot não abre o corpo de certos monstros sozinho. Vou deixar 2 soluções ! Solução 1 1 - Onde esta escrito Nome do monstro coloque o nome do monstro que deseja pegar o loot. 2 - Onde esta XXXX escreva o id do corpo (pode ser obtido dando look no corpo. 3 - Em alguma Hotkey ou Shortkey coloque o comando. Solução 2 1 - primeiramente desative o Loot Monster no Targeting. 2 - coloque o comando em qualquer Hotkey ou Shortkey. Recomendo Caso você queira deixar na cave offline use este comando para nao correr o risco de seu char ficar parado em um certo lugar! Obs: Ira pegar apenas o loot dos monstros que você estava atacando não funciona com ataque em área. Obs: esse comando desligara o CaveBot onde parou pegar o loot e ativar o CaveBot novamente.1 ponto -
Remere's Map Editor 3.2
1 pontoCréditos no final do tópico O que há de novo? Características: minimap exportação por área selecionada. Procurar identificação única, id ação, recipientes ou itens graváveis na área selecionada. Ir para o menu posição anterior. atalho de teclado 'P'. Os arquivos de dados para a versão 10.98. Selecione o botão crua na janela Procurar campo. bugs corrigidos: direção monstro não é salvo. resultado da pesquisa não classificar ids. Texto é escondido depois de selecionar um item da paleta. Exportação minimap por área selecionada: 1 - Escolha uma área. 2 - Vá para File> Export> Export Minimap ... 3 - Escolha a área selecionada opção. Procurar identificação única, id ação, recipientes ou itens graváveis na área selecionada : 1 - Escolha uma área. 2 - Vá para Editar> Localizar na área selecionada> ... Ir para a posição anterior: 1 - Abra Go Para posicionar a janela (Crtl + G) ou Ir para destino no campo de mágica . 2 - Press 'P'. Downloads: Source > Clique aqui RME > Clique aqui Créditos vai ao gostoso do EdMignari1 ponto
-
ver andar debaixo
ver andar debaixo
trancx123 reagiu a roriscrave por uma resposta no tópico
1 pontocoloque tudo acima do andar 7, se estiver no 7 voce nao consegue ver embaixo1 ponto -
[CURSO]Ciência da Computação - Harvard
[CURSO]Ciência da Computação - Harvard
fillipek2 reagiu a LucasTenorio por uma resposta no tópico
1 pontoSaudações TK's.... Sou novato aqui, sou programador, tenho 21, comecei a estudar T.I aos 14.... não sei muita coisa, e o pouco conhecimento adquirido foi ficando para trás com as atualizações da área, mas esse curso aqui é muito interessante. Sobre CC50. Eu fiz e é realmente muito bom, estou refazendo agora...estou na aula 1, assistir a 00 e já estou para começar meu Pset0 (quem assistir vai entender) quem tiver afim de montar um grupo de estudo tamo ai, nesse curso você que não sabe NADA ou que sabe muito vai aprender muito sobre C, PHP ou pelo menos ter uma noção.. Clique Aqui para ir para o curso Abraços.1 ponto -
duvida website poketibia
duvida website poketibia
Julio Nogueira reagiu a Noob II por uma resposta no tópico
1 pontoErre nessa parte, abra esse link > http://localhost/phpmyadmin/index.php selecione sua database e procure pela tabela players e procure por um character chamado Pokemon Trainer Sample (igual a imagem abaixo) e ai você clica em editar e altera o level1 ponto -
modifcando janela de /commands
1 pontoEle disse corretamente sobre o luascript.cpp porém no arquivo só tem as funções utilizadas que é essa: int32_t LuaInterface::luaDoShowTextDialog(lua_State* L) { //doShowTextDialog(cid, itemid, text) std::string text = popString(L); uint32_t itemId = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->setWriteItem(NULL, 0); player->sendTextWindow(itemId, text); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Entendi agora oque você quer porém eu realmente nunca pensei nisso, tente ver oque á função puxa e oque o script puxa e tente caçar na source e em scripts. Boa Sorte1 ponto
-
[PEDIDO] STORAGE
1 pontonão precisa kk < menor que <= igual ou menor que == igual que ~= diferente de > maior que >= igual ou maior que etc1 ponto
-
trocar barra de life
trocar barra de life
ismaeldias2 reagiu a KotZletY por uma resposta no tópico
1 ponto@Tópico movido para área correta, mas atenção da próxima vez!1 ponto -
Passagem secreta diferente
Passagem secreta diferente
Breniinx reagiu a xWhiteWolf por uma resposta no tópico
1 pontoEai pessoal, vim trazer hoje um sistema de passagem secreta que um amigo viu no Baiak-wars. Não sei qual server é esse e eu não jogo tibia então pra mim tanto faz mas ele gravou um vídeo, pediu um igual e obviamente eu não fiz um igual porque o sistema dos caras era muito ruim uhauheuhauheuhauheuhuhauhe Enfim, comecei um script do 0 pra fazer exatamente oque ele queria e foi isso daqui que eu consegui: Explicação: Você clica em algum item escondido pelo mapa e abre uma passagem secreta que vai durar X segundos (configurável), após esse tempo a passagem se fecha; Note que nessas imagens ele não tá escondido já que tem uma FUCKING ARVORE NO MEIO DE UM DESERTO mas você pode colocar uma tocha em cima de uma parede e colocar o actionid na tocha pra ativar e vai ficar super foda e com muito rpg Ué, mas oque tem de diferente dos outros scripts? Bem, ele é super fácil de configurar e ele dá a sensação de que o item foi arrastado :] Bom, se isso não foi o bastante pra você entender então observe essas fotinhas Tendo entendido tudo vamos à parte mais legal da coisa (SCRIPTAR!!!!) Você vai precisar criar um arquivo em actions\scripts chamado hidden.lua com o seguinte conteúdo: local positions = { [1] = {pos = {x=139, y=77, z=7}, id = 1718}, [2] = {pos = {x=140, y=77, z=7}, id = 1718}, [3] = {pos = {x=139, y=76, z=7}, id = 6855, toid = 6884}, [4] = {pos = {x=140, y=76, z=7}, id = 6855, toid = 6884}, } local createpos = { [1] = {pos = {x=138, y=77, z=7}, id = 1718}, [2] = {pos = {x=141, y=77, z=7}, id = 1718} } local tempo = 5 function onUse(cid, item, frompos, item2, topos) if getTileItemById(positions[1].pos, positions[1].id).uid < 100 then doPlayerSendCancel(cid, "Is already open.") return true end doCreatureSay(cid, "You have ".. tempo .." seconds.", 19) function criar_paredes() for i = 1, #positions do if i <= (#positions/2) then doCreateItem(positions[i].id, 1, positions[i].pos) local obst = getTileItemById(createpos[i].pos, createpos[i].id).uid doSendMagicEffect(createpos[i].pos, 2) doRemoveItem(obst, 1) elseif i > (#positions/2) then local obst = getTileItemById(positions[i].pos, positions[i].toid).uid doTransformItem(obst, positions[i].id) end end return true end for i = 1, #positions do local obst = getTileItemById(positions[i].pos, positions[i].id).uid if i <= (#positions/2) and obst ~= 0 then doRemoveItem(obst, 1) doSendMagicEffect(positions[i].pos, 2) doCreateItem(createpos[i].id, 1, createpos[i].pos) elseif i > (#positions/2) and obst ~=0 then doTransformItem(obst, positions[i].toid) end end addEvent(criar_paredes, tempo*1000) return true end Feito isso vc vai precisar declarar no actions.xml a forma que você quer utilizar o script <action actionid="27004" script="hidden.lua"/> note que vc pode colocar algum itemid, actionid ou uniqueid de sua escolhe, só lembre de mudar no map editor dependendo da forma que vc escolher. Agora eu vou ensinar vocês a configurarem o meu monstrinho *-* aqui você tem o tempo que a passagem vai ficar aberta aqui você vai editar o seguinte: na primeira são as posições dos itens e seus respectivos id's posição das duas prateleiras e seus id's posição das paredes, id dela e pra qual id ela vai ser transformada. aqui você tem as posições que sua prateleira vai se mover e os id's dela. Lembrando que você pode se sentir livre pra adicionar oque vc quiser e deixar do seu gosto, só lembrando que se vc quiser adicionar mais items ou diminuir itens é só alterar nas duas tabelas seguindo a mesma lógica. Metade pra prateleira, metade pra parede e uma tabela pra fazer as prateleiras se moverem. Os créditos são 60% meus e 40% do @MaXwEllDeN por ter me dado um norte no começo do script. Qualquer coisa comenta aí e dá aquele rep+ pra ajudar ;]1 ponto -
Broadcast System 100%
Broadcast System 100%
Miragem reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim trazer um script que eu já fiz a algum tempo prum cara no suporte, é nada mais e nada menos doque um sistema de broadcast onde players maiores que um determinado level pagam um determinado valor de gp's para soltarem uma mensagem para o server todo. talkactions\scripts\broadcast22.lua: local config = { storage = 19400, -- storage em que será salvo o tempo cor = "advance", -- de acordo com o constant.lua da lib tempo = 2, -- em minutos price = 1000, -- preço pra usar o broadcast level = 100 -- level pra poder utilizar o broadcast } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end if getPlayerLevel(cid) >= config.level then if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then if doPlayerRemoveMoney(cid, config.price) then setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*60)) doBroadcastMessage("[BROADCAST] "..getCreatureName(cid)..": "..param.."", config.cor) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You have successfully sent a broadcast, now you'll have to wait " ..config.tempo.. " minute(s) until you broadcast again.") return false else doPlayerSendCancel(cid, "You don't have " ..config.price.. " gp's for broadcasting.") return false end else doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.") return false end else doPlayerSendCancel(cid, "You have to be level " ..config.level.. " or more in order to use broadcast.") end end e em talkactions.xml adicione essa linha: <talkaction log="yes" words="/all" event="script" value="broadcast22.lua"/> Da forma que tá configurado os players nv 100 ou mais poderão digitar /all Mensagem e por apenas 1000 gp's eles falarão a mensagem para o server inteiro, feito isso ele terá que esperar 2 minutos para mandar outro broadcast. Se você quiser mudar a cor é só ir no constant.lib e procurar algo parecido com isso daqui: MESSAGE_TYPES = { ["advance"] = MESSAGE_EVENT_ADVANCE, ["event"] = MESSAGE_EVENT_DEFAULT, ["white"] = MESSAGE_EVENT_DEFAULT, ["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE, ["info"] = MESSAGE_INFO_DESCR, ["green"] = MESSAGE_INFO_DESCR, ["small"] = MESSAGE_STATUS_SMALL, ["blue"] = MESSAGE_STATUS_CONSOLE_BLUE, ["red"] = MESSAGE_STATUS_CONSOLE_RED, ["warning"] = MESSAGE_STATUS_WARNING, ["status"] = MESSAGE_STATUS_DEFAULT } Uma imagem pra vcs verem como é:1 ponto -
Bike Box do [ otPokemon ]
1 pontoEstá tudo la no outro topico, Desculpe por demorar 1 ano pra responder mas quem tiver ainda á mesma duvida está ai1 ponto
-
[Znote Aac] Templates
[Znote Aac] Templates
RESSURGE01 reagiu a Gabrieltxu por uma resposta no tópico
1 ponto[ZNote Acc] Template Este modelo é editado zNote acc padrão e esta é a primeira vez que eu Edite um modelo que eu não sei nada sobre HTML ou CSS eu fiz isso logicly e com alguma ajuda de w3schools.com. Usei alguns recursos a partir de modelos antigos como modelo freeq . 1-Abra a pasta zNote e substituir pasta layout com meu layout. 2-Substitua index.php com a abaixo. PHP Code: <?php require_once 'engine/init.php'; include 'layout/overall/header.php'; ?> <div id="menu-top"></div> <div id="menu-bar"> <?PHP echo '<table border="1" cellspacing="1"><tr class="yellow"><td><center>Server Information</center></td></tr> <tr><td>'; $getshit11 = mysql_query("SELECT `id`, `name` FROM `players` ORDER BY `id` DESC LIMIT 1"); $fetchshitt = mysql_fetch_assoc($getshit11); $getshit1 = mysql_query("SELECT COUNT(*) as `shit` FROM `players` "); $fetchshit = mysql_fetch_assoc($getshit1); $getshit2 = mysql_query("SELECT `name`, `level` FROM `players` ORDER BY `level` DESC LIMIT 1"); $fetchshit2 = mysql_fetch_assoc($getshit2); $getshit3 = mysql_query("SELECT COUNT(*) as `shiter` FROM `accounts` "); $fetchshit3 = mysql_fetch_assoc($getshit3); $getshit4 = mysql_query("SELECT COUNT(*) as `yea` FROM `guilds` "); $fetchshit4 = mysql_fetch_assoc($getshit4); echo '<center>Welcome to our newest player: <a href="characterprofile.php?name='.$fetchshitt['name'].'">'.$fetchshitt['name'].'</a></center></td></tr>'; echo '<tr><td><center>The best player is: <a href="characterprofile.php?name='.$fetchshit2['name'].'">'.$fetchshit2['name'].'</a> level: '.$fetchshit2['level'].' congratulations!</center></td></tr>'; echo '<tr><td><center>We have <b>'.$fetchshit3['shiter'].'</b> accounts in our database, <b>'.$fetchshit['shit'].'</b> players, and <b>'.$fetchshit4['yea'].' </b>guilds </center></td></tr>'; echo '</table>'; ?> <hr /> <br /> <ul> <?php $getnews = mysql_query("SELECT * FROM znote_news ORDER BY id DESC LIMIT 3")or die(mysql_error()); while ($parsenews = mysql_fetch_assoc($getnews)) { $title = $parsenews['title']; $body = $parsenews['body']; $date = $parsenews['date']; $author = $parsenews['author']; echo '<table border="1" cellspacing="1"><tr class="yellow"><tr>'; echo '<td><strong><p>'.$title.'</strong> - posted on <strong>'.$date.'</strong> - by <strong>'.$author.'</strong></p></tr></td>'; echo '<td>'.$body.'</td></tr></table>'; }?> </ul> </div> <div id="menu-bot"></div> <?php include 'layout/overall/footer.php'; ?> Download: Code: http://speedy.sh/faZrt/layout.rar or: http://speedy.sh/faZrt/layout-1.rar Creditos: kimokimo ------------------------------------------------------------------------- [ZNote AAC] disposição Tibiawar ZNote AAC Muito Massa Consegui um layout Novo Ai Galera xD config.php para fazer a desaparecer gerado web-título para que você possa usar logotipo etc imagem photoshop. Devido a isso, o título AAC rodapé e líquido navegador título da guia / tex ~ ~ também fica confuso -se. Eu recomendo apenas para apagar Código HTML: <Div id = "slogan" > <h1> <php echo $ config ['SITE_TITLE'];?> </ h1> </ div> de / layout / gerais / header.php E então usar um título AAC adequada em config.php. Download: http://www.speedysha...3jPb/layout.rar Senha para descompilar: tibiamakers espero que Gostem Creditos: Tibiamakers --------------------------------------------------------------------------- [Znote AAC] Dark-tibia template Download: https://dl.dropbox.c...c/darktibia.zip -------------------------------------------------------------------------------------- [Znote AAC] Sorcerer Layout Download: http://www.mediafire...q3dfnoucddj8lfy1 ponto -
Baiak- Lero (8.60)
1 pontocomo faço para os players nao criarem conta god e acabar prejudicando o servidor, atualmente eu estou utilizando o seu servidor.1 ponto
-
[TFS 1.0] - Auto Loot System
[TFS 1.0] - Auto Loot System
Eduardo Dantas reagiu a SuggestName por uma resposta no tópico
1 pontoFiz esse sistema a algum tempo e resolvi compartilhar. Geral o Sistema automaticamente irá recolher o loot dos monstros e adicionar ao player que deu mais dano, caso o loot esteja em sua loot list. Código Creaturescript/scripts, crie um novo arquivo chamado autoloot.lua e adicione o código. function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) addEvent(getCorpseLootList, 100, killer, player:getPosition()) return true end Crie um novo script chamado autoloot.lua dentro da pasta data, e adicione o código. Loot = {} LOOTSTORAGE = 45713 function Loot:create() return setmetatable({}, {__index = self}) end function Loot:add(id) return table.insert(self, id) end function Loot:remove(id) local newtb = {} for k, v in pairs(self) do if (v + 0) ~= (id + 0) then table.insert(newtb, v) end end self = setmetatable(newtb, {__index = self}) return self end function Loot:getString() local str = "" for k, v in pairs(self) do str = str.. v.. ";" end return str end function Loot:getTable() local tb = {} for k, v in pairs(self) do table.insert(tb, v) end return tb end function Loot:saveToPlayer(player) return doPlayerAddStorageValue(player, LOOTSTORAGE, self:getString()) end function getPlayerLootList(player) local lootList = getPlayerStorageValue(player, LOOTSTORAGE) lootList = lootList:split(";") local tableList = {} for k, v in pairs(lootList) do table.insert(tableList, v) end return setmetatable(tableList, {__index = Loot}) end function getCorpseLootList(player, pos) local loot = {} local text = "" local corpse = Tile(pos):getTopVisibleThing() local plits = getPlayerLootList(player):getTable() for i = 0, corpse:getSize() do table.insert(loot, getContainerItem(corpse.uid, i)) end for k, v in pairs(plits) do for x, y in pairs(loot) do if (v + 1) == (y.itemid + 1) then doPlayerAddItem(player, y.itemid, Item(y.uid):getCount()) doRemoveItem(y.uid, Item(y.uid):getCount()) end end end return loot end Crie um novo arquivo dentro de talkactions/script chamado autoloot.lua, e adicione o código. function onSay(cid, words, param) local var = param:split(",") local loots = Loot:create() loots = getPlayerLootList(cid) if words == "/autoloot" then if var[1] == "add" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then return cid:sendCancelMessage("Alread added in the loot list.") end end loots:add(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", added to loot list.") else return cid:sendCancelMessage("This item dont exist.") end elseif var[1] == "remove" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then loots = loots:remove(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", removed from loot list.") end end return cid:sendCancelMessage("Item are not in loot list.") else return cid:sendCancelMessage("Item name dont exist.") end elseif var[1] == "list" then local text = "-- My Loot List --\n\n" for k, v in pairs(loots) do text = text.. k..": "..getItemName(v).."\n" end cid:popupFYI(text) end end return true end Dentro dos monstros aonde o script irá funcionar, adicione o código. <script> <event name="AutoLoot"/> </script> As TAG XML são essas. Creaturescript.xml <event script="autoLoot.lua" name="AutoLoot" type="death"/> Talkactions.xml <talkaction words="/autoloot" separator=" " script="autoloot.lua" /> OBS: No meu servidor eu fiz um novo sistema de storages, As funções são "doPlayerAddStorageValue e getPlayerStorageValue", você só precisa mudar o nome da função pois o corpo dela é o mesmo, então mude isso. Caso tenha esquecido de algo ou algum problema com o código me avise.1 ponto -
(Resolvido)Spell que faz chover arrows
(Resolvido)Spell que faz chover arrows
Miragem reagiu a xWhiteWolf por uma resposta no tópico
1 pontolocal waves = 8 --- numero de vezes que vão cair as flechas local water = {490, 491, 492, 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625} local combat = createCombatObject() local meteor = createCombatObject() setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor, COMBAT_PARAM_USECHARGES, TRUE) setCombatParam(meteor, COMBAT_PARAM_EFFECT, 9) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -30, -50, -40, -55) local meteor_water = createCombatObject() setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor_water, COMBAT_PARAM_USECHARGES, TRUE) setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, 1) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -30, -50, -40, -55) combat_arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) local function meteorCast(p) doCombat(p.cid, p.combat, positionToVariant(p.pos)) end local function stunEffect(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_STUN) end function onTargetTile(cid, pos) if (math.random(0, 6) == 6) then local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) if (isInArray(water, ground.itemid) == TRUE) then local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_HOLY) addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water}) else local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_ARROW) addEvent(meteorCast, 200, {cid = cid,pos = pos, combat = meteor}) end end end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) for i = 0, waves do addEvent(function() if isCreature(cid) then doCombat(cid, combat, var) end end, 200 * i) end return true end <instant name="Supreme Paladin" words="exevo mas gran con" lvl="350" mana="1500" prem="1" needtarget="1" exhaustion="2000" needlearn="0" event="script" value="especiais/paladin.lua"> <vocation id="7"/> </instant> Prontinho, editei e agr tá igualzinho vc quer.1 ponto -
GesiorACC 2019 8.60 UPDATE 29/06/2019
GesiorACC 2019 8.60 UPDATE 29/06/2019
TheusFragaxD reagiu a Natanael Beckman por uma resposta no tópico
1 pontoOpa valeu Sim, vou add.. Valeu mano hã?1 ponto