Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/18/12 em %
-
Boas Práticas Para Programar
Gabriel Couto e 2 outros reagiu a MaXwEllDeN por um tópico no fórum
Olá Galera, hoje vou postar um tutorial que ensina você a deixar seu código mais bonito, legível e organizado. Vamos lá. Em primeiro lugar vamos aprender oque é indentação ou identação. Exemplo de um código com indentação: function doPlayerCompleteQuest(uid, quest) doPlayerAddItem(uid, quest[1], quest[2]) setPlayerStorageValue(uid, quest[3], 1) doTeleportThing(uid, getTownPosition(getPlayerTown(uid))) doPlayerSendTextMessage(uid, 27, "Você completou a quest ".. quest[4] ..".") if (getPlayerStorageValue(uid, quest[5]) > 0) then doPlayerSendTextMessage(uid, 27, "E recebeu um bônus por ter completado outra quest.") end return true end Este mesmo código, mas agora sem indentação: function doPlayerCompleteQuest(uid,quest) doPlayerAddItem(uid,quest[1],quest[2]) setPlayerStorageValue(uid,quest[3],1) doTeleportThing(uid,getTownPosition(getPlayerTown(uid))) doPlayerSendTextMessage(uid,27,"Você completou a quest "..quest[4]..".") if (getPlayerStorageValue(uid,quest[5])>0) then doPlayerSendTextMessage(uid,27,"E recebeu um bônus por ter completado outra quest.") end return true end Um código com indentação, a primeira vista pode não ser nada de mais. Porém se você fizer um código grande, com muitas funções, condições e declarações, uma boa indentação deixa seu código muito mais fácil de ser lido por outros programadores e até por você mesmo e ser modificado também. Enquanto eu lia um livro sobre C++, encontrei uma lista de algumas boas práticas para programar que eu já conhecia e outras que aprendí. Listarei algumas delas aqui.3 pontos -
Sabemos que inovar é bom e também sabemos que tudo de mais é sobra, então aqui vai a questão, o que vocês estão achando dos updates frenéticos que o Tibia Global está passando? Após o update da versão 8.6 para a 8.7 a queda de players foi imensa de 64 mil para 28 mil players ativos, muitos dizem que a causa foi os novos sistemas que a CipSoft implantou tais como: Cooldown e Mounts System, tirando o verdadeiro RPG do Jogo. Não podemos também deixar de comentar sobre o sistema de Push em que o player pode trocar de lugar com seu adversário a qualquer momento, eu assisti um vídeo de uma Guerra no mundo Neptera e não gostei, parecia mais a dança do quadrado todo mundo mudando de SQM livremente. Emfim o que vocês acham do assunto? a CipSoft estar inovando de mais? prejudicando o jogo?2 pontos
-
Esse servidor é o melhor global 8.60 da atualidade, ele é vendido pelo site da otprojects, eu o comprei porém a primeira pessoa que divulgou foi o Guizinhoo então irei da os créditos a ele. O servidor é bem completo, com muitas funções boas e com o mapa mais completo, vocês podem aproveitar várias coisas do servidor.. Quem tem problemas com site, aconselho usar este.. Junto com database e outros.. eu não o baxei, e nen testei.. eu tenho ele aqui em casa pois eu também o comprei, se for ele mesmo, vocês estão conseguindo o melhor global disponível no momento. de graça. Global Pack FULL Servidor: * War System * Addon Bonus * Task completas (quest log) * Paralyze exaust * Raids completas e com horário * 5 eventos automáticos e com horário (Coliseum, Zombie, Loterry, Dota e War of Emperium) * Mapa COMPLETO * Todas as quests * Uptime +400h * Arena Hunting (VIP) * Recompensa lvl 45 * 11 Cidades + 12 Ilhas (VIP) * 120+mb * Sha1 ~> password é salvo em códigos * Database completa Site: * Proteções * Informaçoes sobre, task, raids, 5 eventos, addon bonus, War System * Melhor gesior da atualidade Downlaods: Download Servidor http://www.4shared.c...OTProjects.html Download WebSite http://www.4shared.c...or_extreme.html Download tfs+dll 4.0 ~> http://speedy.sh/dKCC9/DLLS-DISTRO.rar Download Dll [opção 2] http://www.4shared.c...s_e_Distro.html ____________________________________________________ Downlaod somente Mapa http://www.xtibia.co...me-world-118mb/ Download somente Db http://speedy.sh/9WDFh/database.sql ____________________________________________________ Scans: * Não sei se ja colocaram o servidor aqui no xtibia, qualquer coisa contate-me __________________________________ Eu estou usando o site no meu yurots, caso queiram da uma olhada é esse: pvp24h.servegame.com <- click1 ponto
-
Para Todos Que Adoram o Global ai vai ele..; Real Global Map 8.70 Real Global Map: Versão do Tibia:8.70 Mapa global 95% full. Quase todos os NPC's do Tibia Global. Servidor com o mínimo de bugs possíveis. Scripts arrumados. Itens 8.70 Mount sistem Cidades: Yalahar Carlin Ab'Dendriel Kazordon Thais Venore Darashia Ankramun Edron Port Hope Liberty Bay Svargrond Cormaya Zao 100% (acesso por farmine) Farmine (acesso por cormaya) Quest's: Arena Quest Demon Oak Demon Helmet Inquisition anihilator Quest Pits of Inferno (POI) 95% global. HOTA Quest Banshee Quest Behemoth Quest Blue Legs BK Bright Sword Naginata Vamp Shield Fire Axe Mermaid Comb Orc Fortress Necro Quest Dark Shield Noble Armor Desert Quest Stealth Ring Zao arena /Features 8.6>>/8.7 Mount Igual o Tibia Global<> Mais Informaçoes vao serem postadas!... Fotos: Download: OT Donw Dll e exe Scan: Ot Scan Dll e exe Creditos: Nycholaszinzhu TFS *Darker(Trazer ao xtibia) Gostou ++++ Para min....! Obs:O OT Possui alguns bugs!..; 2 Hospeda-lo em um bom PC 3GB MEMORIA RAM+ E O PC TEM QUE TA RAPIDO OTIMO SE NAO Podera dar Lag..!1 ponto
-
Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação ! Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses. Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk. E o único meio de perder Pontos de Reputação é matando players que não estejam pk. O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Para que Esse Sistema pode ser Útil: Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +) Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -) Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +) Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam: -Entrar em lugares; -Fazer quests; -Usar magias; -Usar outras talkactions; -E várias outras coisas. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora vamos ao que interessa os scripts: Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole: --<Script by jhon992>-- function onKill(cid, target, lastHit) vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+ -- Ao matar monstros do vetMonster, ganhara rep+. for i=0, #vetMonster do if (getCreatureName(target) == vetMonster[i]) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster[i]..".") return TRUE end end -- Ao matar um pk, ganhara rep+. if (isPlayer(target) == true) then if (getCreatureSkullType(target) > 2) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE end Agora em "data/creaturescripts/creaturescripts.xml" cole a tag: <event type="kill" name="RepSystem" event="script" value="repsystem.lua"/> Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag: -- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1, -- Então vamos zera-lo para que sua Reputação comece do 0. if (getPlayerStorageValue(cid, 102087) ~= 1) then setPlayerStorageValue(cid, 102087, 1) setPlayerStorageValue(cid, 102086, 0) end registerCreatureEvent(cid, "RepSystem") Terminamos a parte do Sistema e agora vamos para o talkaction de rank. Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole: function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Reputação\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Pontos | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.") return TRUE end end E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag: <talkaction words="!rep" event="script" value="rankrep.lua"/> Pronto, terminamos o nosso Simple Reputation System! -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Reputation Door----- Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole: function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE end Agora em data/actions/actions.xml cole a tag: <action actionid="2085" script="repDoor.lua"/> E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Quantidade de Reputação para usar determinado item ----- Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole: local quantRep = 30 -- quantidade de reset para usar determinado item function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 102086) < quantRep then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com "..quantRep.." pontos de reputação ou mais, podem usar essa arma!") return FALSE end return TRUE end Agora vai em data/movements/movements.xml abre e adicione a tag: <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemRep.lua"/> Troque os slots na tag acima como desejar, tipos de slots: head armor legs hand shield ring necklace feet pickupable Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Comprar determinado item com Pontos de Reputação ----- Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole: local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true end Agora em data/talkactions/talkactions.xml cole a tag: <talkaction words="!buy" event="script" value="buyrep.lua"/> Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua". Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem". -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Mostrar Reputação no Look (by Vodkart)----- Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole: function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]") end return true end No creaturescripts.xml cole a tag: <event type="look" name="showRep" event="script" value="showrep.lua"/> E no arquivo login.lua, antes do último return true: registerCreatureEvent(cid, "showRep") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Versão 2.0 repsystem.lua ----- Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso: É isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!1 ponto
-
Resumindo rapidamente é um script onde tem a função de mandar mensagem ao servidor dizendo que tal player morreu,seja para um jogador ou para um montro. Creaturescript/script crie um arquivo.lua e renomeie para deathcast.lua function onDeath(cid, corpse, deathList) if isPlayer(deathList[1]) then return true,doBroadcastMessage("[DeathCast] Informs:\n".. getCreatureName(cid) .. "[" .. getPlayerLevel(cid) .. "] was Killed by player: " .. getCreatureName(deathList[1]) .. "[" .. getPlayerLevel(deathList[1]) .. "]",18) end return doBroadcastMessage("[DeathCast] Informs:\nThe player ".. getCreatureName(cid) .. "[" .. getPlayerLevel(cid) .. "] was Killed by " .. getCreatureName(deathList[1]) .. ".",20) end Creaturescript.xml adicione <event type="death" name="DeathC" event="script" value="deathcast.lua"/> creaturescript/script/login.lua registerCreatureEvent(cid, "DeathC")1 ponto
-
[Tutorial]Como Tirar 95% Do Lag Do Tibia E Ficar Com A Cave Com Luz
Vilden reagiu a brunoknoblauch por um tópico no fórum
E aew calerinha fmz? se n estiver esse tudo vai te melhorar hehe mais chega de papo gogo pro tuto Introdução Nesse tutorial eu irei encinar a voces como tirar uma boa parte do lag e a unitilizar as torchs que sao meio toscas de conseguir pelo tibia, em rook e mais facil mais no resto fica dificel Tutorial 1° passo: abra o tibia, logue na sua acc depois clique em options, graphics, advanced, clique em directX5 depois almente o lighting ambiente ao maximo e de ok 2° passo: dessa a barinha em graphics ate axar algo assim 1280X720 16 bits clique la e clique em fullscreen de ok 3° passo: voce deve ter notado que no 1° passo tirou um pouco do lag e as caves ficaram iluminadas e no 2° passo ficou em modo tela cheia (para sair aperte a bandeirinha do lado de ctrl) depois de ter feito isso tudo de ok em todos e, no tibia, aperte alt+f8 voce irar ver no canto esquerdo da tela em cima que apareceu uma bolinha (vermelha: pouca conectividade com a internet, laranja: conectividade media, verde: alta conectividade) em frente da bolinha escrito drx5 e fps: e algun numeros se aqueles numeros passar de 50.00 irar lagar um pouco (obs: se vocer nao quer a luz nas caves nao mexa em lighting ambient) Creditos 80%: ao meu irmão por ter me encinado 20%: por eu ter tido a cara de pau de nao pedir e ainda postar aqui o tutorial dele kk ScreenShots anexadas colocando luz na cave e directx5 colocando fullscreen e 1280X720 modo fullscreen (opcional mais recomendado) com o alt+f8 apertado1 ponto -
1 ponto
-
MAP KANTO (54MB): desatualizado, motivo; nao consigo mais exportar o minimapa de tao grande ta dando bug. MAP JOHTO (16MB): Editando... Todos estão bem detalhados, se o topico render eu posto mais fotos de todas as citys. OBS: Ambos os mapas eu fiz do 0, pra quem duvida basta saber que eu sou o criador do server q veio a ser conhecido como PokemonDashFight, sou o mystery, e na epoca que comecei a fazer o servidor foi em janeiro, portanto, entre idas e voltas, esse projeto já tem quase 1 ano. INTRODUÇÃO: Bom, isso tambem nao vem ao caso mas vo aproveitar o post pra falar um pouco do projeto, alem de mapper eu sou scripter, spriter e um pouco programmer, e doido ainda faço engenharia. Vou utilizar este topico pra falar do jogo, não tenho muitas fotos, pois nao tenho tempo pra ficar tirando, oque eu posso dizer e provar é que estou com o servidor pronto (que fiz sozinho) que contém todos os sistemas de pokemon q eu conheço (e eu estudei bastante tah), bom dentre estes os que me vem ao topo da cabeça pra eu citar agora são: level, nick, sexo, nature, happy, food, 6 status por poke (todos funcionais), eggs, TM's, Boost, Injuries, PvP, bike, headbutt, dive, gyms, FULL SHINY, TODOS OS POKEMONS JOHTO, MOVES 100% (kanto e johto), além de mais de 60 npcs e cliente inovador, porém eu tenho muitos outros, vou fazer um topico em outra area para explicá-los mais tarde. Gostaria de citar - e tambem agradece-los - que utilizei a source do Dash para faze-los, só mexi em 3 coisinhas, então já tenho todos aqeueles systems conhecidos adpatados no meu server. AJUDA: O negócio é o seguinte, to precisando de mappers dispostos a terminar esse mapa johto, ou apenas criarem hunts personalizadas pra eu poder adicionar, o tempo da curto pra mim se continuar fazendo tudo sozinho parece q nao vou acabar o servidor nunca, quem tiver disposto a parceria favor contato. Pra quem nao sabe este é o mapa Kanto-Johto; Se topico render eu posto mais fotos! Atualizado 13/10 - Priguiiça Eh isso, Até o Próximo post galêree. Pra mais actions e scripts de pokemon dash veja minha assinatura!1 ponto
-
Graandes amigos do Xtibia! Bom, sou um visitante diário aqui da seção de design do Xtibia e acho que eu posso estar contribuindo pra atender a grande quantidade de pedidos aqui nessa seção. Minha intenção é fazer 1 sign por dia, maas se eu estiver livre, ficarei feliz em atender mais pedidos. Eu estarei me limitando na criação apenas de signs, não tenho prática em avatares e fan bars. Caso eu não consiga entregar o pedido em 1 dia, por favor espere, seu pedido será entregue. O que eu preciso pra fazer a sign: - Dimensões (ex: 200x150) - Tema (ex: Naruto/personagem) - Texto (ex: Zodiak) (Pedidos que não contenham essas especificações, ainda serão atendidos, porém serão feitos do meu jeito.) O resto fica no critério de vocês, sintam-se livres para especificar como vocês querem a sign. Importante - O limite é 1 sign a cada 2 semanas por usuário. Sendo que o usuário deve ter no mínimo 10 posts, seguindo as regras da seção. - Vou pedir também que a comunidade se limite a postar apenas o pedido, outros assuntos/agradecimentos/criticas mandem por PM, pois facilitaria muito o entendimento e a ordem dos pedidos. E é isso ai, espero estar ajudando! Se quiserem ver alguns dos meus trabalhos visitem meu deviant Aulas Também estou dando "aulas" toda terça e quinta para membros com pelo menos 200 posts. A aula funciona da seguinte maneira: Você escolhe um tema, e fazemos uma sign juntos, passo à passo. Poste aqui o pedido da aula que enviarei um PM marcando o horário.1 ponto
-
DOWNLOAD RETIRADO A PEDIDO DO DONO, POR FAVOR FECHEM O TÓPICO!1 ponto
-
Olá a todos do xtibia hoje estava aki de boa entao resolvi criar um script de buyitems diferente como funciona bom você fala !buyitems nomedoitem,quantidade você vai comprar exemplo: !buyitem sword,5 5 sword por o preço estipulado no script em /data/talkactions/script crie um script e renomeie pra buyitems e adcione iso dentro: function onSay(cid, words, param, channel) local config = { --- id preço nome ["sword"] = {id=iddoitem, price=100, name="sword"}, ["axe"] = {id=iddoitem, price=102, name="axe"} } local s = string.explode(param, ",") if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "diga algo para ver a lista diga !buyitems list.") return true end if param == 'list' then local str = "" str = str .. "lista de items :\n\n" for nome, info in pairs(config) do str = str..nome,info.price.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end for i, x in pairs(config) do if (s[1] == x.name) then if doPlayerRemoveMoney(cid, s[2] * x.price) == TRUE then doPlayerAddItem(cid, x.id, s[2]) else doPlayerSendTextMessage(cid, 22, "Desculpe, mais você nao possui "..x.price.." gps.") end end end return true end em talkactions.xml <talkaction words="!buyitems" event="script" value="buyitems.lua"/> explicando aki e aonde você adciona caso queria adcionar mais você tera que editar o nome de la << quanto o ultimo > ATT.1 ponto
-
1 ponto
-
[ Resolvido ][Pedido] Quero Esse Mapa
JulioNakanishi reagiu a Makelin1 por uma questão
hmmm ta bugado mas vo ver aki se descubro Opa amigooo !! descubri pra vc dei uma olhada no 4shared !! e achei aki http://www.4shared.com/rar/QO57yeG1/Global_Server_101_Developed_by.htm1 ponto -
Cipsoft Lança Novo Sistema De Detecção De Bots
Lordfire reagiu a Sir Picaralhos por um tópico no fórum
Uma grande *** são os jogadores que precisam de programa para poder jogar. Uma grande *** são os jogadores que se acham por um programa fazer tudo por eles. Sem mais. Concordo, acredito que não seja tão simples assim essa detecção do bot. Cip é uma empresa que vale alguns milhões de dólares, talvez eu ainda esteja jogando baixo. Há de uma equipe excelente e muito bem paga para formar modos de combater. Porém o modo mais certo seria updates em cada ServerSave. E vocês acreditam que se o interesse da Cip fosse realmente acabar com os bots ela não teria capacidade e capital para isso? Penso eu que ela tanto quer agradar os jogadores que repudiam pessoas que utilizam de forma injusta programas para serem melhores por não tem habilidade suficiente, assim como tenta agradar os jogadores que utilizam desses programas não fazendo updates constantes e sim de vez em quando. Se eu fosse empresário de uma empresa do porte da Cip, estaria orientado a faturar o maior ganho possível, e limitar um jogo ao invés de expandir a vários tipos de jogadores não seria uma jogada de mestre. Não, muito pelo contrário. Quem joga global é porque não gosta de BOT. Em OTServers o uso de BOT geralmente é permitido e os servidores tambem nao tem sistema anti-BOT eficiente. Se BOT fosse permitido, o Tibia ia acabar em 3 dias. O tibia não acabaria. Fato. Porque? Simplesmente pelo longo dos updates que venho acompanhando velhos bots utilizados no passado, como de mira presa por exemplo, foram incorporados no jogo pelas famosas hotkeys. O ataque pelo battle também foi incorporado para facilitar o jogo, se for pensar o Tibia em suas diversas atualizações incorporou certos comandos parecidos com antigos bots. Ou seja a incorporação futuramente de novos sistemas que facilitem a vida dos jogadores não me surpreenderiam. Sem mais. Abraço Att. Rafa1 ponto -
[ Resolvido ](Pedido) Npc Que Te Leva Ne Um Lugar
Gabriel Couto reagiu a Vilden por uma questão
Pelo jeito, dúvida sanada. Tópico reportado!1 ponto -
[Resolvido] Npc Quest
leonvenigor reagiu a jhon992 por uma questão
@Subwat, reportado por flood. Não é a primeira vez que vejo tu floodando topicos dessa maneira para ganhar mais posts, sendo que qualquer um pode entender oque esse usuario quer, e mesmo depois do usuario explicar melhor você não atende seu pedido. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @leonvenigor, o script do npc vai ficar assim: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local itemNeed = { -- itens que precisa para completar a troca {itemid = 1234, quant = 10}, -- id do item, quantidade } local spellName = "Light" -- nome da spell que aprendera, os nomes das spells se encontrar no arquivo spells.xml local lvlNeed = 8 -- lvl necessario para fazer a quest. 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, 'trocar') then selfSay('Você deseja trocar '.. itemNeed[1].quant ..''.. getItemNameById(itemNeed[1].itemid) ..', pela spell' .. spellName ..'.', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') then if getPlayerLevel(cid) < lvlNeed then selfSay('Você não possui level necessario.', cid) return true end for i=1, #itemNeed do if getPlayerItemCount(cid, itemNeed[i].itemid) < itemNeed[i].quant then selfSay('Você não possui os item necessarios para troca.', cid) return true end end for i=1, #itemNeed do doPlayerRemoveItem(cid, itemNeed[i].itemid, itemNeed[i].quant) end doPlayerLearnInstantSpell(cid, spellName) selfSay('Você aprendeu a spell'.. spellName ..'.', cid) else selfSay('Você não deseja {trocar}?', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto -
#Repotado area errada e double tópico, essa area é para divulgação de equipe, não divulgação de otserv.1 ponto
-
Quem disse que é por storage? porém dá para fazer por storage também, aliás eu fiz isso com o honor points 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 shopWindow = {} local t = { [2195] = {price = 15}, [2493] = {price = 25}, [2361] = {price = 30}, [8851] = {price = 20}, [8925] = {price = 30}, [2640] = {price = 50}, [2494] = {price = 100}, [9932] = {price = 50}, [2472] = {price = 70}, [8931] = {price = 100} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getPoints(cid) < t[item].price then selfSay("você não tem "..t[item].price.." points", cid) else doPlayerAddItem(cid, item) doPlayerRemovePoints(cid, t[item].price) selfSay("aqui está seu item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) [2195] = {price = 15}, [iD DO ITEM] = {price = qntos pontos vao custar o item}1 ponto
-
Isso resolvera seu problema. Em data/movements/movements.xml cole as tags: <movevent type="StepIn" actionid="25000" event="script" value="tiledance.lua"/> <movevent type="StepOut" actionid="25000" event="script" value="tiledance.lua"/> Duplica um arquivo em data/movements/scripts e nomeia para "tiledance" sem as aspas e nele cole: function onStepIn(cid, item, pos) if (getPlayerStorageValue(cid, 302124) > 0) then doPlayerSendTextMessage(cid, 22, "Você não pode subir com dancing system ativado.") return false end setPlayerStorageValue(cid, 302123, 1) return TRUE end function onStepOut(cid, item, pos) setPlayerStorageValue(cid, 302123, 0) return TRUE end Agora em talkactions/scripts, troque seu arquivo "dancing.lua" por esse: local conf = {} -- // config // --- conf.danceTexts = {"GO GO DANCE!", "DANCE NOW!", "DANCE IS FUNY!"} conf.textSpeed = 1500 -- how fast animated texts is sending? conf.danceSpeed = 100 -- dance speed conf.outfitSpeed = 250 -- outfit changer speed conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits -- // end // -- function dancer(tab) if isPlayer(tab[1]) then local dirs = {[0] = {1,3},[1] = {0,2},[2] = {1,3},[3] = {0,2}} local look = dirs[getCreatureLookDirection(tab[1])] doCreatureSetLookDir(tab[1], look[math.random(1,2)]) tab[2].dancer = addEvent(dancer,conf.danceSpeed, {tab[1], tab[2]}) end end function messager(tab) if isPlayer(tab[1]) then doCreatureSay(tab[1], conf.danceTexts[math.random(1, #conf.danceTexts)], TALKTYPE_ORANGE_2) tab[2].messager = addEvent(messager,conf.textSpeed, tab) end end function outfitChanger(tab) if isPlayer(tab[1]) then if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then outs = conf.outfitFemale else outs = conf.outfitMale end local outfit = { lookType = outs[math.random(1, #outs)], lookHead = math.random(1,133), lookBody = math.random(1,133), lookLegs = math.random(1,133), lookFeet = math.random(1,133), lookTypeEx = math.random(1,133), lookAddons = math.random(0,3)} doCreatureChangeOutfit(tab[1], outfit) tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab) end end backOutfit = {} local backOutfit = {} function onSay(cid, words, param, channel) local pid = getPlayerGUID(cid) if type(events[pid]) ~= "table" then events[pid] = {} end if (getPlayerStorageValue(cid, 302123) > 0) then doPlayerSendTextMessage(cid, 22, "Você não pode ativar o dancing system no trainer.") return true end if string.lower(param) == "start" and not(events[pid].dancer) then outBack = getCreatureOutfit(cid) backOutfit[pid] = outBack backOutfit[pid].lookType = outBack.lookType backOutfit[pid].lookAddons = outBack.lookAddons dancer({cid, events[pid]}) messager({cid, events[pid]}) outfitChanger({cid, events[pid]}) setPlayerStorageValue(cid, 302124, 1) elseif string.lower(param) == "stop" and events[pid].dancer then stopEvent(events[pid].dancer) stopEvent(events[pid].messager) stopEvent(events[pid].outfitChanger) events[pid] = {} doCreatureChangeOutfit(cid, backOutfit[pid]) setPlayerStorageValue(cid, 302124, 0) end return TRUE end1 ponto
-
[ Resolvido ]Loot System Completo Para 8.6
pedrizito15 reagiu a Sofft por uma questão
@pedrizito15, RESOLVIDO, vou querer os REP+ ein, rsrs kkk, você não vai acreditar, não ta caindo loot porque você está matando os monstros com o GOD, simplesmente isso! tente matar com player normal, eu testei aqui e está 100%.1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
natanaelnsd reagiu a Slicer por um tópico no fórum
@Patrickstrela eh q nos tamos flando em ingles... eh a barra "pesquisar..." ae emcima... no lado direto dentro do banner inicial do site u,U -barra pesquisar como em qlqr outro site por ae.. mas dai ali emvez de deixar como "google" coloca como "este tópico"...- @Maguito sei la mano.. pelo q vi ate agora em videos/imagens... tem moves pra kct sim ;x sem fla na porrada de novos sistemas e NPCs... ;x1 ponto -
1 ponto
-
:greenperson: Sharp Rook War! :greenperson: Chegou o tão esperado Rook War com anihileitor! minha versão chamada: Sharp Rook War :blueperson: Oque foi modificado do normal rookwar para o sharp? :blueperson: No Sharp temos agora novo vizual totalmente mudado templo, treiners e dp. :blueperson: No Sharp agora temos uma quest! anihi ice. contendo os melhores items de atk. Staff, Axe, Sword e Spear! :blueperson: No Sharp agora temos treiners que não hitam apenas treinão seu shieding, podendo dar exit sem morrer. :blueperson: No Sharp foi modificado spells e runas para melhor jogabilidade. :orangeperson: Fotos do Sharp Rookwar. :orangeperson: Templo :orangeperson: Anihileitor Ice :orangeperson: Treiners :redperson: Downloads: :reload: Scan:Clique aqui :excl: Download: Clique aqui [importante]1 ponto
-
(Pedido) Pet system (Personalizado)
JeanCristian reagiu a jhon992 por uma questão
to meio desatento hj, esqueci uma virgula nessa linha: loot = false, -- se ao morrer o jogador irá perder o loot É a linha de numero 7 no arquivo amulet_protection.lua, só adicionar a virgula depois do false.1 ponto -
Mapeando Com Seus Amigos. [Rme Beta 3.0]
Gabrielzxzx reagiu a Vilden por um tópico no fórum
Link não está respondendo, poderia arrumar? enviado uma mensagem para o autor. edit, Link que funciona. http://remeresmapeditor.com/files/beta/1 ponto