Líderes
-
-
-
Natanael Beckman
MembroPontos574Total de itens -
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/07/17 em todas áreas
-
New Library v. 1.2
New Library v. 1.2
Under e um outro reagiu a xWhiteWolf por uma resposta no tópico
2 pontosFala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal) Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro: Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório. Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20) Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros. Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir) Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu. Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira. Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida. EDIT 2: Duas novas funções adicionas, espero que gostem! EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.2 pontos -
[Hotkeys ELF Bot] Hks, cave bots e muito mais!!
[Hotkeys ELF Bot] Hks, cave bots e muito mais!!
SlowK e um outro reagiu a vital900 por uma resposta no tópico
2 pontosMotivo do post é que parei de jogar tibia 8.6 (quando vai pra frente reseta)... Todo o conteúdo é 100% meu, logo dificilmente você achará em outro lugar.. ~~~~~~~~~~~~~~~~~~Hotkeys!~~~~~~~~~~~~~~~~~~ Hotkeys úteis para todas as vocações e outros tipos: Hotkeys para a vocação Sorc: Hoketys para a vocação Druid: Hotkeys para a vocação Kina: Hotkeys para a vocação Pala: Hotkeys para as vocações warrior - kina e pala: Hotkeys para as vocações mages druid e sorc: Hotkeys extras 1: Hotkeys extras 2: ~~~~~~~~~~~~~~~~~~~Cavebot!~~~~~~~~~~~~~~~~~~ label oq é: Hotkeys úteis para cavebot: Lista de itens Id: http://www.elfbot.com.br/2012/11/tibia-item-id-list.html2 pontos -
Como faço para tirar isso do Config/do ot: maxPlayers = 100-- codificado e limitado para 7
Como faço para tirar isso do Config/do ot: maxPlayers = 100-- codificado e limitado para 7
fillipek2 e um outro reagiu a Andreeyyy por uma resposta no tópico
2 pontosVamos la, oque exatamente vocêr quer? Aquela linha " -- codificado e limitado para 7". Pode apagar, nada ver2 pontos -
Vocação ter imunidade contra elemento X
Vocação ter imunidade contra elemento X
BangxD e um outro reagiu a Biinhow por uma resposta no tópico
2 pontos<vocation id="4" name="Knight" description="a knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="2" manamultiplier="3.0" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="4"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/> <absorb percentEnergy="12"/> <absorb percentFire="14"/> <absorb percentPoison="10"/> <absorb percentice="8"/> <absorb percentHoly="-7"/> <absorb percentPhysical="-7"/> <absorb percentDeath="5"/> <absorb percentLifeDrain="0"/> <absorb percentManaDrain="15"/> <absorb percentDrown="0"/> </vocation>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 -
[tutorial] Toda vez que logar o canal abre. (help, trade, etc..)
[tutorial] Toda vez que logar o canal abre. (help, trade, etc..)
Thay Oliveira reagiu a narazaky por uma resposta no tópico
1 pontoO canal abre automaticamente e envia uma mensagem laranja Primeiramente vai em creaturescript/ script e abra o arquivo login.lua e procure por antes de if(lastLogin > 0) then adicione isso: doPlayerOpenChannel(cid, CHANNEL_HELP) pronto. Mas se você quer que abra outro canal só fazer o mesmo processo, mas no lugar de "CHANNEL_HELP" você coloca o ID do canal que vc querer Mas se além disso quer que envia uma mensagem, é só depois disso colocar essa tag: addEvent(valid(doPlayerSendChannelMessage), 150, cid, "", "MENSAQUEM QUE VAI APARECER.", TALKTYPE_CHANNEL_HIGHLIGHT, CHANNEL_HELP) --SE FOR EM OUTRO CANAL É SO POR O ID DELE NO LUGAR DO CHANNEL_HELP. Pronto. Para ver os IDs dos outros canais, vai em data/xml/channels.xml e vai estar lá mais ou menos assim procura o id do canal que você quer e pimpa Créditos: 99% Narazaky 1% inspirado no ot do ADM MV . \/1 ponto -
Remere's Map Editor 3.3 ATUALIZADO(11.00)
Remere's Map Editor 3.3 Características: Suporte para dicas no mapa Suporte para visualização de animações Restaurar a última posição ao abrir um mapa Exportar resultado de pesquisa para um arquivo txt Melhorias no pincel Waypoint Melhor suporte em tela cheia no macOS Corrigido bugs: Itens maiores que 64x64 agora são exibidos corretamente Corrigido potencial falha ao usar o pincel de ponto de referência Corrigido um bug em que você não conseguia abrir arquivos de mapas clicando neles enquanto o editor estava sendo executado Agora você pode abrir a pasta de extensões no macOS Corrigido um bug em que uma pesquisa de item não exibiria nenhum resultado no macOS Corrigido vários problemas relacionados à edição de casas no macOS Remeres suporte 11.0 Download Source Creditos GitHub Topico original1 ponto
-
Lucky Guard - [ANTI NUKER]
Lucky Guard - [ANTI NUKER]
Apache reagiu a William Oliveira por uma resposta no tópico
1 pontoBoa noite pessoal do TibiaKing, Hoje estarei compartilhando uma ferramenta que poderá ajudar quem ainda cria servidores em Windows e está sofrendo alguns ataques (nukes). Bom, o nome da ferramente é Lucky Guard. Ela é bem simples de ser usada, segue os procedimentos. 1- Ao abrir o arquivo irá solicitar uma senha > luckyguard 2- Com o anti-nuker aberto, selecione as portas que deseja monitorar 3- Clique em start para começar o monitoramento 4- Para ver os ataques bloqueados clique na aba LOGS Segue algumas imagens do anti-nuker. Download: Link Scan: Link1 ponto -
[GlobalEvents] ServeSave - Shutdown/Automático
[GlobalEvents] ServeSave - Shutdown/Automático
premii reagiu a Natanael Beckman por uma resposta no tópico
1 pontoGalera é um script muito simples, porém pra mim é muito ÚTIL. Abra a pasta data/globalevents/scripts crie um arquivo .lua com o nome GlobalSave.lua, em seguida adicone o code: function prepareShutdown(minutes) if(minutes <= 0) then doSetGameState(GAMESTATE_SHUTDOWN) return false end if(minutes == 1) then doBroadcastMessage("Server is going down in " .. minutes .. " minute for global save, please log out now!") elseif(minutes <= 3) then doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save, please log out.") else doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save.") end shutdownEvent = addEvent(prepareShutdown, 60000, minutes - 1) return true end function onTime() return prepareShutdown(5) -- Quantos minutos pra executar o ServeSave. end Ajustes: Quando quiser modificar os minutos altere: -return prepareShutdown(5) - (5) = 5 minutos, eu recomendo no mínimo 5 minutos, em outras palavras não mexa. Em globalevents.xml adicione a tag seguinte: <globalevent name="GlobalSave" time="05:30" event="script" value="GlobalSave.lua"/> No meu ServeSave é feito as 05:30 da manhã, modifique pro horário desejado! Em config.lua verifique essa regra: Se tiver TRUE deixa, assim ele fecha o .exe se não tiver no seu config.lua não tem problema closeInstanceOnShutdown = true - - - Esse tutorial é só isso, clique em GOSTEI, e comente no tópico, muito obrigado! -------------------------------------------------------------------------------------------------------------------------------------------------------- AUTO RESTART -------------------------------------------------------------------------------------------------------------------------------------------------------- Pra você que utiliza Windows esse é perfeito: Dezon OT Admin [restarter] Pra você que utiliza Linux: Baixe esse arquivo, TFS.SH, bote dentro da pasta do seu OT. Esse arquivo está configurado pra abrir outro arquivo chamado tfs caso o seu seja outro nome mude pra esse, tfs. Sempre que for abrir seu OT execute esse comando ./tfs.sh& e assim toda vez que o OT cair ele renicia automaticamente.1 ponto -
Projeto Dbo Adventure World
1 pontoEsse é um projeto que traz uma visão diferente dos outros Dragon Ball com um estilo mais RPG . Dragon Ball Adventure World e a continuação do DBO KING que tinha sido interrompido . Nesse Topico traremos Todos os tipos de atualizao desde Mapping a sprites entre outras. Mapping Sprites1 ponto
-
(Um npc qualquer)
(Um npc qualquer)
martimtiburcio reagiu a PsyMcKenzie por uma resposta no tópico
1 pontoNPC1: <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc um" script="NPC1.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá, |PLAYERNAME|. Você quer me {ajudar}? Eu posso te recompensar..."/> </parameters> </npc> local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'ajudar')) then selfSay('Você pode me ajudar? Preciso que mate um {boss} para mim e assim eu lhe darei uma recompensa!', cid) end --------------------------------------------------------- if(msgcontains(msg, 'boss')) then if (getPlayerStorageValue(cid,15001) == -1) then selfSay('Mate o boss e eu irei te recompensar!', cid) doTeleportThing(cid,{x=160, y=54, z=7}) elseif (getPlayerStorageValue(cid,15001) == 1) then selfSay('Você já matou o boss!', cid) end return true end --------------------------------------------------------- if(msgcontains(msg, 'recompensa')) then if (getPlayerStorageValue(cid,15001) == -1) then selfSay('Você ainda não matou o boss!', cid) elseif (getPlayerStorageValue(cid,15001) == 1) then local itemr = doPlayerAddItem(cid, 4863, 1) doSetItemActionId(itemr, 10213) selfSay('Parabéns, aqui está sua recompensa!', cid) end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vai em creaturescripts/scripts, crie um arquivo com o nome de boss e adicione: function onKill(cid, target, lastHit) if(isMonster(cid)) and getCreatureName(cid) == "NOMEDOBOSS") then setPlayerStorageValue(lastHit, 15001, 1) doTeleportThing(lastHit,{x=POS DO NPC, y=POS DO NPC, z=POS DO NPC}) end return true end Em creaturescripts.xml adicione a tag: <event type="kill" name="BossKill" event="script" value="boss.lua"/> Em login.lua adicione: registerCreatureEvent(cid, "BossKill") NPC2: <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc dois" script="NPC2.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá, |PLAYERNAME|!"/> </parameters> </npc> local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local itemRemove = 105 -- Item que irár "perder" local Outfits = { ["citizen"]={136} } function Remove(cid) if doPlayerRemoveItem(cid,itemRemove, 1) then if(getPlayerSex(cid) == 0)then doPlayerAddOutfit(cid, Outfits[param][1], 3) selfSay("Parabéns, você ganhou um novo outfit!", cid) talkState[talkUser] = 0 else doPlayerPopupFYI(cid, "Você não pode receber o outfit, pois está faltando o item!") return false end end end if getPlayerStorageValue(cid, 15001) == -1 then selfSay("Fale com o outro NPC e volte depois!!") talkState[talkUser] = 0 elseif (msgcontains(msg, 'mission')) then selfSay("Você quer receber seu outfit?") talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if Remove(cid) then elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) O NPC3 vou tentar fazer e posto aqui. Testa esses e me diz se funcionou.1 ponto -
Ajuda com OTPANEL
1 pontotava pensando em contratar o serviços deles por causa disso e gostaria de saber sobre isso também se alguém puder dar uma força agradeço1 ponto
-
[Spell] Erro na distro
[Spell] Erro na distro
Guilherme HP reagiu a Radamanthys Wov por uma resposta no tópico
1 pontoSim claro kkk1 ponto -
[SPELL] CreateItem
[SPELL] CreateItem
Rikikajimo reagiu a Hankro por uma resposta no tópico
1 pontoE na spells.xml <instant name="teleport" words="teleport" lvl="1" mana="1" prem="0" range="1" selftarget="1" needlearn="0" blockwalls="1" event="script" value="teleport.lua"></instant>1 ponto -
Best Baiak Completo
Best Baiak Completo
Tsuunaa Reboorn reagiu a Werner por uma resposta no tópico
1 pontoO /t está dando errado porque os players estão registrados em outro lugar. Vá no seu config.lua e coloque qual vai ser o TownId dos players, depois disso vá no seu SqlStudio e coloque isso no query editor Ou então veja no RME se tem alguma cidade registrada. Os itens donates não estão feitos, porém eu tenho um items.xml com eles prontos, se quiser eu te envio, mas seria melhor vc fazer os seus próprios itens donate...1 ponto -
[8.60]Winchester Server (Exp Alta)
@Slaake o link para download do tópico foi retirado. Peço que o adicione novamente nas próximas 72 horas. Caso contrário terei de mover este mesmo tópico para a lixeira. Um abraço.1 ponto
-
[Gesior] Retirar :8090 do Site método 100%
[Gesior] Retirar :8090 do Site método 100%
NTORox OTServer reagiu a ADMDestroyer por uma resposta no tópico
1 pontoBom Galera venho trazer pra vocês meu tutorial com um método infalivel de como tirar o :8090 do seu site,de forma facil e rapida,pois estava em busca e não achei respostas e nen tutoriais que resolvessem meu problema. Bom para começarmos você deve configurar seu site para a porta :8090 Acesse a pasta do XamPP/apache/conf e abra o arquivo httpd com o bloco de notas. Procure por : Listen 80 E por : ServerName localhost:80 Substitua todos os 80 por 8090. Dentro da pasta conf, abra a pasta extra, e em seguida abra httpd-ssl e procure por : Listen 443 E por: <virtualhost _default_:443=""> Substitua esses 443 por 4499. Agora vá; em seu firewall e Adicione a Porta 8090 e Porta 80 e marca a opção TCP. Se usar Roteador, desbloqueie as portas no router tambem Agora reinicie o xampp e acesse seu Site http://localhost:8090/ Feito Isso acesse no-ip.com crie sua conta caso não tenha uma Depois acesse sua conta e vá em ADD Host Agora em Hostname coloque um nome qualquer para que os player acessem seu site Ex: meuotserver.servegame.com Em Host Type selecione port 80 redirect em ip adreess não mecha em port coloque 8090 Selecione a opção Mask URL em page title coloque o nome do seu servidor Depois desca e clique em create host Em seguida aguarde 5 minutos para o host atulizar e voce ja pode acessar seu site pelo hostname que voce criou exemplo.servegame.com E depois crie outro ip de acesso ao servidor pois voce nao conseguira acessar o servidor,pois vai dar conflito! Créditos 100% ADM Destroyer por descobrir o método e trazer a vocês Caso poste em outro forum coloque os devidos crétidos1 ponto -
[Error occured!] Ajuda com Gesior 1.0
Ola. Va na pasta do seu ot abra o config.lua de Ctrl + F e procure por User em baixo do user tera uma script chamada pass Entre aspas estara um nome ex "tutorial' exclua o nome de la e tente dar f5 no site Se ti ajudei. Marque como Melhor Resposta e agradeça com um Rep+, clicando em Gostei!. Obrigado!1 ponto
-
Logout com 5 segundos parecido com do Otpokemon
Logout com 5 segundos parecido com do Otpokemon
Thay Oliveira reagiu a L3K0T por uma resposta no tópico
1 pontoEae galera sabe aquele sisteminha do Otpokemon que você loga, tem que esperar 5 segundos para sair, então aqui vou disponibilizar o meu script, parecido com do Otpokemon e que fiz para meu sevidor www.facebook.com/pokemondbr vamos lá! Vá na pasta creaturescripts/scripts copia um arquivo lá e ronomeia para logout delay e adiciona isso. agora em login.lua adiciona isso pra registrar o script. agora em creaturescrpts.xml coloque a tag pra funcionar. É isso vai prevenir problemas no seu ot e melhorando mais ainda e evitando mais leg que todo os ot sofre! Resultado Vídeo.1 ponto -
canThrowObject(fromPos, toPos)
canThrowObject(fromPos, toPos)
KotZletY reagiu a Orochi Elf por uma resposta no tópico
1 ponto[LUA Function] canThrowObject(fromPos, toPos) Função: Ela checa as posições da posição inicial "fromPos", até a posição final "toPos" e verifica se é andável, caso for ele retorna verdadeiro, caso não for, ele retorna a falso. Código: function isWalkable(pos, creature, proj, pz) -- By Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false end local n = not proj and 2 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function canThrowObject(fromPos, toPos) -- by OrochiElf while(fromPos.x ~= toPos.x or fromPos.y ~= toPos.y) do local fromPos = getPosByDir(fromPos, getDirectionTo(fromPos, toPos)) if not isWalkable(fromPos) then return false end end return true end Exemplo: if canThrowObject(getThingPos(cid), getThingPos(getCreatureTarget(cid))) then doSendDistanceShoot(getThingPos(cid), getThingPos(getCreatureTarget(cid)), 10) end Instalação: Pasta do OT -> Data -> LIB -> 050-Functions. Créditos: OrochiElf & Nord.1 ponto -
function printTable(table)
1 pontoSe você já leu o manual de referência já deve ter visto uma função parecida com essa. O que ela faz? Ela printa uma tabela completa, por exemplo: Executando ela em seu OT: O chamado printTable{1,3,4,[5] = 5, [6] = 1} retorna Instalação Crie printTable.lua em data/lib e cole: function printTable(table, includeIndices,prnt) -- By Killua if includeIndices == nil then includeIndices = true end if prnt == nil then prnt = true end if type(table) ~= "table" then error("Argument must be a table") return end local str, c = "{", "" for v, b in pairs(table) do if type(b) == "table" then str = includeIndices and str..c.."["..v.."]".." = "..printTable(b,true,false) or str..c..printTable(b,false,false) else str = includeIndices and str..c.."["..v.."]".." = "..b or str..c..b end c = ", " end str = str.."}" if prnt then print(str) end return str end Utilização Basta chamar ela colocoando sua tabela como primeiro argumento, exemplo: printTable({1,2,3,4}) O segundo parâmetro (includeIndices) define se os indices vão ou não ser mostrados no print. Como padrão, ele tem valor true. Por exemplo: printTable({1,2,3,4}) ou printTable({1,2,3,4}, true) Vai printar: {[1] = 1, [2] = 2, [3] = 3, [4] = 4} E printTable({1,2,3,4}, false) Vai printar: {1, 2, 3 ,4} Além de printar sua tabela, a função ainda retorna ela como string. Sendo assim, você pode usar essa string para oque precisar. Por exemplo: doPlayerSendTextMessage(cid, 25, printTable{1,2,3,4}) Vai enviar para o player a mensagem: "{[1] = 1, [2] = 2, [3] = 3, [4] = 4}" Obrigado, espero que sjea útil.1 ponto
-
Script de mensagem ao logar
1 pontoEm creaturescripts > Scripts > Login.lua Encima do ultimo return true Ajudei? REP+1 ponto