Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/07/13 em todas áreas
-
Coerência e princípios em mapping
BlackTheRabbit e 7 outros reagiu a vital900 por um tópico no fórum
Olá galera Eksiana, Por meio deste material, estarei tentando explicar a galera oque é certo e oque é errado no mapping. Para mostrar oque têm e oque não têm lógica. Tentando acabar com os baiaks e poke styles. Bom, para começar isto tenho que explicar oque seria lógico.. Bom algo lógico seria algo coerente, ou seja, para você fazer uma boa área ela tem que ser coerente com aquilo que você deseja retratar, ela tem que "seguir um padrão". Primeiro, para quem não sabe oque é coerência, Coerência: Idéias ou fatos que unidos tornam algo lógico, algo que possa existir. Logo, percebemos que para mappear não podemos simplesmente unir várias 'coisas' e formar uma COISA, que esta 'lindo', para retratar algo que seja realmente bom, você deve tentar recriar o real, e para fazer o magnifico fazer este real virar uma obra, devemos pintar (editada) até o ultimo espaço com o material certo. Exemplo de uma boa obra: Exemplo do magnífico (retratando o mesmo tema). Podemos perceber que para se haver coerência, os seguintes termos devem ser adotados em seu mapa: [Localização] O local retratado deve condizer com tudo em todos os termos. [Tamanho & Formato] Tamanho correto, nem muito grande nem apertado demais. Nada deve ser quadrado demais. [Detalhes & Auto-Border] Habitat (local) com detalhes apropriados para oque se deseja retratar. Não use auto border! *Todas as imagens usadas nesse tutorial são apenas para explicação do mesmo. __________________________________________ Iniciando, Recomendo que antes de prosseguir, você leia o tutorial sobre os equipamentos a se usar para se mappear e sobre como ter seu primeiro contato com o RME. Depois de ter lido você já sabe o básico sobre o mapping, então continuemos. Localização Bom este tópico pode ser divido em dois: NPC's/Monstros [Respaw] Para se fazer um mapa coerente, este deve apresentar coerência em tudo, até no local onde você irá colocar os seus respaws, seja de monstro, seja de NPC. Pensemos: <> Monstro pelo tipo do local: é ilógico existir um monstro do elemento fogo em um ambiente gélido, logo colocar um Demon numa área de gelo seria incoerente, logo errado. Agora colocar tal monstro em ambientes de lava seria o correto a se fazer, pois o elemento do monstro seria coerente ao elemento do ambiente. <> Monstro em determinados locais: Bom, alguns 'mappers' decidem colocar por achar legal, um monstro de grande poder próximo ao local de 'entrada' do servidor [os famosos Templos], isto é totalmente errado, pois nestes locais sagrados existem jogadores de todos os níveis (newbies ou não), assim seria errado colocar qualquer monstro de ATK nas proximidades deste ambiente. <> Local em determinado ambiente: Certas coisas devem ser levadas em conta na hora de mappear, por exemplo: Eu montei uma área de lava/fogo.. Por mais criativo que eu seja, nunca ficaria legal, ou funcionaria combar esta área com um ambiente gélido (ligar uma área a outra é algo importante, logo a lógica deve ser usada), ou até mesmo com um templo de nature.. Pisos de 'azulejo' não deve ser usados como ruas para sua cidade.. Etc.. Deve-se ter um senso, do que é correto ou não. Tamanho & Formato Um comum erro entre os iniciantes, é exagerar no tamanho das construções e as deixa-las quadrada de mais.. Uma área grande atrapalha e muito na hora de mappear, pois uma grande área requer uma grande quantidade de detalhes, e poucos são os capacitados a detalha-la bem com um tamanho tão grande. Caso você crie algo grande e seja iniciante, deverá sair como a imagem acima, sem detalhes, algo feio e 'sem-vida'. E tente retirar o formato quadrado, procure ou retangula-lo ou arredonda-lo. Pois o pior formato que se pode ter é o quadrangular. Veja um mero exemplo de uma construção, ela esta simples, pequena e arretangulada.. Viu, algo simples e pequeno. Porém muito mais belo que o grande e 'complexo'. Não pense que estes erros de tamanho e formato acontecem apenas em construções não.. Eles acontecem em nature também, e em maior incidência nas montanhas. Lembre-se, pela lógica o natural não é 'fixo' ele tem variantes em seus formatos e tamanhos. Veja um mero exemplo de uma montanha feita erroneamente. Usando-se auto border, fazendo-a quadrada e grande.. Agora veja uma montanha feita no raw, com paciência, e usando os critérios de tamanho e formato.. Viu, basta fazer algo menos e caprichado que o resultado vêm com facilidade, e obviamente usando a lógica no que esta fazendo. Detalhes & Auto Border Bom os detalhes devem condizer com o local tratado, ou seja, você deve usar a lógica na hora de detalhar suas áreas. Pois qualquer erro, mesmo que bobo, pode tirar um pouco da magnifícidade de seu mapa. O auto border ele faz o mapper perder a sua credibilidade, pois este programa ele mappeia para o mapper, e não só isto o trabalho que este sistema(A.B.) faz só atrapalha o mapper, seja suas bordas retas, sua facilidade em ajudar o mapper a cometer erros fatais entre outros.. Um mapa feito no RAW é um mapa SEU, um mapa feito no Auto Border é um mapa feio e do programa. Erros que devem ser evitados, pois estão incoerentes com o ambiente ou com 'abuso de auto border'.. Áreas corretamente feitas, você deve procurar retrata-las. Sem auto border. Bom, eu esta esperando apenas um comentário como: Para continuar o tutorial. Anne (para quem não conhece, AnneMotta é/foi uma grande mapper), na verdade é esta seriedade para com o mapping que o traz ser divertido, pois você tenta explorar a sua criatividade para fazê-lo bonito, lógico e bom de ser jogado. <> O Tibia Global é um exemplo a se seguir em muito aspectos, porém eles não são perfeitos, no mapping eles vêm melhorando.. Porém ainda existem áreas com bug's (estes dias o GuizitoG, encontrou cerca de 30 bug's de mapping no tibia global por uso de "auto-border". Como você disse na POI existem áreas com lava e madeira.. Mas pense, se eu posso ser original e coerente a ponto de fazer algo comum e monótono virar algo 'incomum', coerente (lógico) e até mesmo magnífico, porque me limitar?. Então para transformar a área sem lógica acima em algo coerente, basta colocar alguns 'fields' de fogo sobre esta ponte, para aparentar que ela esta se queimando, que ela esta sendo denegrida pelo constante contato com o fogo, fazendo assim uma área mais bela e lógica. Espero que tenham gostado. Créditos: vital900 Rippar é crime. Obs: oque não é de minha autoria tem o link de redirecionamento ou os créditos.8 pontos -
The OTX Emporia - Global Full + Razachai + Quest.
SamueLGuedes e 2 outros reagiu a Animal Pak por um tópico no fórum
Informações: Servidor utiliza a versão do OTX 2.51 Itens, Monstros e Magias 8.7-9.81 Mapa Global Full Recompensas por nível Vocações balanceadas Comandos !saveme, !bless, !spells, !aol entre outros Trainers War System Servidor 100% estável Livre de erros e bugs E mais! Imagens: Download The OTX Server (Emporia) x32: Mega Scan The OTX Server (Emporia) x32: Virustotal Download The OTX Server (Emporia) x64: Mega Scan The OTX Server (Emporia) x64: Virustotal Acc GOD: mythos/mythos Créditos: The OTX Team Emporia Team Mythos SmoOkeR3 pontos -
Frozen/Stop
Fausto32 e um outro reagiu a LuckinhaSan por um tópico no fórum
É uma talkaction bem simples, que simplesmente serve para deixar o player parado, sem deslogar ou andar. De alguma forma acho útil para a staff, ou em eventos... Tentem ser criativos. Vá em data/talkactions/scripts, copie um arquivo .lua e renomeie para stop, cole isso - Adicione a seguinte tag em talkactions.xml - <talkaction log="yes" words="/stop" access="5" event="script" value="stop.lua"/> Imagens - Créditos - Fausto322 pontos -
2 pontos
-
Duvida Num Script aki
PsyMcKenzie e um outro reagiu a 448055 por uma questão
Aew pessoa Boa Tarde a todos quero saber se tem alguma faltando ou errada nesse script que eu fis se tiver como dizer se ta errado ou ta certo ou se tive faltando alguma coisa agradeço '-' Valendo Rep+ function onUse(cid, item, frompos, item2, topos) if item.uid = 16591 then queststatus = getPlayerStorageValue(cid,16591) if queststatus = -1 then if getPlayerLevel(cid) >= 100 then doPlayerSendTextMessage(cid,22, "Voce Comseguiu Completar a Quest") doPlayerAddItem(cid,2160,100) setPlayerStorageValue(cid,16591,1) else doPlayerSendTextMessage(cid,22, "Você ja pegou sue premio vaza") end else return 0 end return 1 end2 pontos -
Parabens Pelo Topico2 pontos
-
<?xml version="1.0" encoding="UTF-8"?> <groups> <group id="1" name="Player"/> <group id="2" name="Tutor" flags="16809984" customFlags="2" access="1" violationReasons="0" nameViolationFlags="0"/> <group id="3" name="Senior Tutor" flags="68736352256" customFlags="14" access="2" violationReasons="0" nameViolationFlags="0" statementViolationFlags="0" maxVips="200"/> <group id="4" name="GameMaster Tellus" flags="3808558964575" customFlags="257215" access="3" violationReasons="0" nameViolationFlags="0" statementViolationFlags="0" depotLimit="3000" maxVips="300" outfit="75"/> <group id="5" name="GameMaster Tellus" flags="3840774348794" customFlags="781823" access="4" violationReasons="0" nameViolationFlags="0" statementViolationFlags="0" depotLimit="4000" maxVips="400" outfit="266"/> <group id="6" name="Master Tellus" flags="3845069447162" customFlags="2097151" access="5" violationReasons="23" nameViolationFlags="170" statementViolationFlags="213" depotLimit="5000" maxVips="500" outfit="302"/> </groups>2 pontos
-
Evolera.pl v3 - UPDATE 12.11 EVOLUTION MEGA EDIT
Tony Araujo reagiu a LuckinhaSan por um tópico no fórum
Evolera v3 - SPECIAL EDITION 12.11 Equilíbrio De Profissões Nossa principal tarefa era equilibrar profissão, foi feito todos os esforços para fazer com que pareça profissional. Nesta edição ninguém reclamou dos ataques fracos de qualquer profissão. Bob Marley - Event Nosso convidado especial apareceu, NPC que nos dá missões incríveis. Eu acho que ele capturou um determinado grupo social para ots! Governor - Quest Quest Hardcore Oficialmente achamos ser a mais difícil missão no ot. Pode-se obter itens que não está no shoopie sms. Itens de hardcore aos equipamentos para cada profissão. Sacred Dragon Tales - Event Assim, as 10 missões de um dragão misterioso, cada missão é única. Dragão misterioso tem para você uma série de valiosos prêmios na forma de experience e itens. New Quest Room: Sala de quest totalmente reconstruída, agora parece muito mais agradável e linda! Reconstruiu a cidade/templo: A nova cidade é jescze mais misteriosa, esconde um monte de missões secretas, missões e locais para os quais podemos obter apenas alguns. O templo atualizou, agora com mais espaço, temos acrescentado novos teleports e npceki Novos monstros! Ghastly dragons Medusa Drakeny Helish Tortoisy Halloween Pumpkiny Rainbow Margarothy Sacred Dragon Child Sacred Mastery Novos NPC's! Bob Marley Governor Gladia Tommy Rastaman Uncle Fester Bob Marley Mother Novos Items! Armor-Noob Helmet-Noob Dark monk armor Guardian boots Dragon scale boots Lucky Charm Crystal-Tp Hardcore Set Hardcore Weapons E todos items Zaoan Novos Scripts! Agora, o seu progresso que você será capaz de verificar o log de quest Ou Lotto [sistema de bilhete! Ticket] Melhoria Tetris e Snake Boomberman Trem-atacante Monki Faster [você não pode matá-los] Segredos do sistema ou quests escondidas, missões, npceki lugar secreto Addons em nosso ots está ficando em 2 maneiras através de Missões Addon e Dolla Outfiter [alavanca dando addons no templo] agora muda roupas por 30min. Muito mais ataques e eventos Bounty Hunters [ou hunted system] Novos Systemas! War System Outfit system Afk system Extensive reporting system players New channels like "Yahoo" Castle System Vote System Boomberman system Tetris system Casino System Soccer System Snake system Addon Bonuses Lottery System Comandos para players! / Balance - controle de balanço ! Online - quem está online - Online ! Uptime - mostra quantas horas servidor Stoji ! Deathlist - lista de mortes ! Pvp - verifica se o servidor está pvp ou non-pvp ! serverinfo - informações do servidor / Commands - uma lista de comandos ! Soft - correção softy ! Firewalker - reparos FWB ! Backpack - mochila compra ! Aol - comprar Amulet of Loss ! Bless - abençoar compra 100% ! Premium - prêmio de compra ! spells - lista de spells ! Changesex - mudança de sexo ! Frags - mostra o número de frags ! it - guilda roupas mudança ! After - mudança de roupas festa ! Buyhouse - compra uma casa ! Sellhouse - vende uma casa ! Leavehouse - sair de casa ! Createguild - criar guildas ! Joinguild - Junte-se a guilda ! Afk on /! Afk off - afk sistema ! so - comando para votar ! Did not - comando para votar ! Bomb - bomba que você colocou no boomberman ! Ticket - Lotto sistema / War - todos os comandos para os goods Novos Eventos! Metin Stones Castle War Sacred Dragon Nesta edição, foi corrigido todos os erros de novos hosters [houses e problemas no map] Todos os créditos vão para Alex. Screens - Download - Via MediaFire Download - Via 4Shared1 ponto -
Vip System By Mock 100%
Bluetooth reagiu a Natanael Beckman por um tópico no fórum
Boa galera eu mais uma vez trazendo comodidade e algo seguro pra nós. Esse sistema VIP do Mock foi modificado e aptado em alumas partes dos scripts, para um funcionamento correto e com isso tivemos a ajuda dos scripts, Doidin, Luke sky walker e por min por ter ido atraz de todas as soluções pra completa algo incompleto. Vamos nois: 1° Acesse a pasta data/lib copie la um arquivo.lua e renomeio para 049-vipsys.lua, após isso apague tudo dentro desse arquivo e adicione este coder: vip = { name = "Vip system"; author = "Mock"; version = "1.0.0.0"; query="ALTER TABLE `accounts` ADD `vip_time` INTEGER"; query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL" } function vip.setTable() dofile('config.lua') if sqlType == "sqlite" then db.executeQuery(vip.query) else db.executeQuery(vip.query2) end end function vip.getVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';") if ae:getID() == -1 then return 0 end local retee = ae:getDataInt("vip_time") or 0 ae:free() return retee end function vip.getVipByAcc(acc) assert(acc,'Account is nil') local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';") if a:getID() ~= -1 then return a:getDataInt("vip_time") or 0, a:free() else error('Account don\'t find.') end end function vip.setVip(cid,time) dofile("config.lua") assert(tonumber(cid),'Parameter must be a number') assert(tonumber(time),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';") end function vip.getVipByAccount(acc) assert(acc,'Account is nil') return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0 end function vip.hasVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) or 0 if os.time(day) < t then return TRUE else return FALSE end end function vip.hasVips(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) if os.time(day) < t then return TRUE else return FALSE end end function vip.accountHasVip(acc) assert(acc,'Account is nil') if os.time() < vip.getVipByAccount(acc) then return TRUE else return FALSE end end function vip.getDays(days) return (3600 * 24 * days) end function vip.addVipByAccount(acc,time) assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') local a = vip.getVipByAcc(acc) a = os.difftime(a,os.time()) if a < 0 then a = 0 end; a = a+time return vip.setVipByAccount(acc,a) end function vip.setVipByAccount(acc,time) dofile("config.lua") assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';") return TRUE end function vip.returnVipString(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == TRUE then return os.date("%d %B %Y %X ", vip.getVip(cid)) end end 2° Abra a pasta data/creaturescrpits/scripts copie la um arquivo.lua e renomeio para vip.lua, dentro dele adicione: By Lukeskywalker function onLogin(cid) local temple = { x =32369, y = 32246, z = 6} if vip.hasVip(cid) == true then if getPlayerStorageValue(cid,55555) ~= 1 then setPlayerStorageValue(cid,55555,1) end else if getPlayerStorageValue(cid,55555) == 1 then doTeleportThing(cid, temple) doPlayerSendTextMessage(cid, 22, "Your VIP Time over!") db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid))..";") setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, 55555, 0) end end return true end Você pode troca as coordenadas do templo: local temple = {x=32369, y=32246, z=6}. 3° Em data/creaturescripts/scripts/login.lua adicione essas tags: registerCreatureEvent(cid, "FimVip") registerCreatureEvent(cid, "VipReceive") 4° Em data/creaturescripts/creaturescripts.xml adicione está tag: <event type="login" name="FimVip" event="script" value="vip.lua"/> 5º Em data\movements\scripts copie la um arquivo.lua e renomeio para viptile.lua e adicione este coder dentro do mesmo: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "You need to be a vip player to access this area.", enterMsg = "Welcome to vip area!", enterEffect = CONST_ME_MAGIC_RED, } if isPlayer(cid) == true then if vip.hasVip(cid) == FALSE then doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true end end 6° Em data\movements\movements.xml adicione a tag: <movevent type="StepIn" actionid="13500" event="script" value="viptile.lua"/> Vejam a numeração 13500 você irá usar no tile que você quer para a passagem de player VIP para configurar adicione a numeração em ActionID do tile. 7° Em data/talkactions/scripts acrecente dentro da pasta scripts uma outra pasta com o nome VIP vamos precisar de 7 arquivos.lua quem teram os nomes e coder a seguir: add.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Added "..param.." Vip Days.") return doPlayerAddVipDays(cid, param) end addvipp.lua function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n[Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".") doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.") else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.") end elseif param:lower():find('del') == 1 and 3 then local _,_,name = param:lower():find('del (.+)') if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n") end vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time()) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.") elseif param:lower():find('see') == 1 and 3 then local _,_,name = param:lower():find('see (.+)') name = name or "" if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n") end local ret_ = vip.getVip(getPlayerByName(name)) if ret_ == 0 then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.") else return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_)) end end return TRUE end get.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.") end is.lua function onSay(cid, words, param, channel) if isPlayerVip(cid) == TRUE then doPlayerSendCancel(cid, "You are a VIP player.") else doPlayerSendCancel(cid, "You are not a VIP player.") end end removevip.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Vip removed.") return doPlayerRemoveVip(cid) end set.lua function onSay(cid, words, param) if vip.hasVip(cid) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid))) else if vip.getVip(cid) ~= 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time())) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. You naver has a vip.") end end return TRUE end 8°Em data/talkactions/talkactions.xml adicione está tag: <!-- VIP System --> <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" /> <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" /> 9° Para finalizar execute este comando na sua database na tabela accounts: alter table `accounts` add `vip_time` INT NOT NULL; Bom galera fim este sistema vip adiciona os dias corretos e ao termino do VIP o player recebe a menssagem que o VIP acabou é teleportado pro templo porque se no caso ele estiver na área VIP essa é uma saida e zera a coluna vip_time. Creditos: Mock (por ter iniciado algo e não terminou) Lukeskywalker (Sistema de finalização perfeito do vip.) Natan Beckman (Por ter ido atrás a conclusão 100% in game e php)1 ponto -
ShopGuild Points 100% add em player offline.
marvadon reagiu a Natanael Beckman por um tópico no fórum
Obrigatoriamente leia tudo! Opa galera mais uma vez eu trazendo o melhor para todos. Hoje vou postar o sistema de Guild de Points que eu utilizo em meu OTserver, acredito que dificilmente será encontrado por ae um tão completo e sem bugs igual o que será postado logo abaixo, é um sistema completo que é utilizado pelo líder da guild executando um comando que, se tiver de acordo com as regras que seram feitas por você, todos os membros da guild iram receber os pontos uma unica vez, lembrando que quando os pontos são adicionados a um player ele não receberá entrando em outra guild e não receberá criando outro personagem na conta, resumindo ele só receberá uma unica vez na conta e com um player só. E um dos detalhes que me causava dor de cabeça era que quando um líder executava o comando, quem estava online recebia os pontos, mais quem estava offline não recebia, isso acontecia normalmente porque tem guilds que contém 50, 70, 100 players, portanto nem sempre todos estavam online. O comando só pode ser executado uma vez por dia cada guild, para não gerar processamentos desnecessários e assim um mal funcionamento do servidor. Cada administrador pode configurar seu sistema da forma que quiser, por ser um sistema muito simples, você pode bota que todos os players estejam no minimo level x, que a guild só possa executar o comando quando estiver quantidade x de players online, isso é bom porque traz um certa dificuldade para fraudes de pontos, e o sistema só vira bagunça dependendo do que você vai oferecer no seu shop guild, eu particularmente só utilizei esse comando porque muitas guilds grandes pediam pontos, eles me cobravam uma quantidade x de pontos e eu cobrava uma quantidade x de player então pra automatizar o processo e não ter dor de cabeça foi feito todo esse sistema. Se você analisar bem vai ver que tudo isso só gera mais crescimento ao seu servidor. Bom, vamos ao sistema: Em talkactions.xml, adicione a tag abaixo: <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts faça um .lua com o nome guildpoints e dentro dele adicione os coder abaixo: GuildPointsConfigs = { ExecuteIntervalHours = 24, NeedPlayersOnline = 10, NeedDiferentIps = 6, MinLevel = 80, AddPointsForAcc = 9 } function getGuildPlayersValidAccIDS(GuildID, MinLevel) local RanksIDS = {} local AccsID = {} local ValidAccsID = {} Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'") if(Query1:getID() == -1) then return ValidAccsID end for i = 1, Query1:getRows() do table.insert(RanksIDS, Query1:getDataInt("id")) Query1:next() end Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."") if(Query2:getID() == -1) then return ValidAccsID end for i = 1, Query2:getRows() do local AccID = Query2:getDataInt("account_id") if #AccsID > 0 then for k = 1, #AccsID do if AccID == AccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(AccsID, AccID) end else table.insert(AccsID, AccID) end Query2:next() end Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")") if(Query3:getID() == -1) then return ValidAccsID end for i = 1, Query3:getRows() do local AccID = Query3:getDataInt("id") if #ValidAccsID > 0 then for k = 1, #ValidAccsID do if AccID == ValidAccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(ValidAccsID, AccID) end else table.insert(ValidAccsID, AccID) end Query3:next() end return ValidAccsID end function onSay(cid, words, param, channel) if(getPlayerGuildLevel(cid) == 3) then local GuildID = getPlayerGuildId(cid) Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'") if(Query:getID() == -1) then return true end if Query:getDataInt("last_execute_points") < os.time() then local GuildMembers = {} local GuildMembersOnline = {} local PlayersOnline = getPlayersOnline() for i, pid in ipairs(PlayersOnline) do if getPlayerGuildId(pid) == GuildID then if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then table.insert(GuildMembersOnline, pid) end end end if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then local IPS = {} for i, pid in ipairs(GuildMembersOnline) do local PlayerIP = getPlayerIp(pid) if #IPS > 0 then for k = 1, #IPS do if PlayerIP == IPS[k] then AddIPList = false break end AddIPList = true end if AddIPList then table.insert(IPS, PlayerIP) end else table.insert(IPS, PlayerIP) end end if #IPS >= GuildPointsConfigs.NeedDiferentIps then local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel) db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points") if #ValidAccounts > 0 then db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");") for i, pid in ipairs(GuildMembersOnline) do local PlayerMSGAccID = getPlayerAccountId(pid) for k = 1, #ValidAccounts do if PlayerMSGAccID == ValidAccounts[k] then doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.") break end end end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.") end return true end No coder acima bem no inicio tem as linhas seguintes para configurar: ExecuteIntervalHours = 24, ( Intervalo para execução do comando, ae está de 24 em 24hrs) NeedPlayersOnline = 10, (Quantos players é preciso está online para poder executar o comando.) NeedDiferentIps = 6, (Quantos IPS diferentes são necessários para executar o comando no exemplo ae tem 6.) MinLevel = 80, (Aqui adicione o level minimo, é necessário que todos os player da guild tenha o level pedido para o lider executar o comando.) AddPointsForAcc = 9, (Aqui é a quantidade de pontos para adicionar em cada player da guild.) Certo, a parte do servidor é esta, ta feita, vamos adicionar a database o coder a seguir: ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0; ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0'; CREATE TABLE `z_shopguild_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, `pid` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) Olha estamos quase finalizando tudo, só precisamos terminar a parte de web. O meu GuildShop eu copiei meu shopsystem.php e fiz umas modificações, simples você pode fazer o mesmo é menos trabalhoso. Copie o shopsystem.php renomeie para shopguild.php, após abra-o e modifique como manda a seguir: shop_system para shopguild_system premium_points para guild_points premium points para guild points z_shop_offer para z_shopguild_offer shopsystem para shopguild z_shop_history_pacc para z_shopguild_history_pacc z_shop_history_item para z_shopguild_history_item Ou utilize este já pronto: shopguild.php O shopguildadmin.php esté no link abaixo, basta fazer o mesmo procedimento: shopguildadmin.php Em index.php add: case "shopguild"; $topic = "Shop Guild"; $subtopic = "shopguild"; include("shopguild.php"); break; case "shopguildadmin"; $topic = "ShopGuild Admin"; $subtopic = "shopguildadmin"; include("shopguildadmin.php"); break; Vá em config.php adicione: $config['site']['shopguild_system'] = 1; $config['site']['access_adminguild_panel'] = 9; Vá em layouts.php adicione abaixo de buypoints: <a href='?subtopic=shopguild'> <div id='submenu_shopguild' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguild' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Em layouts.php add depois do shopadmin: if($group_id_of_acc_logged >= $config['site']['access_adminguild_panel']) echo "<a href='?subtopic=shopadmin'> <div id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon'style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a>"; Finalmente terminamos! Bom todo esse processo é feito só para facilitar tudo pra você e o player e pra diferenciar o Shop System do Shop Guild, porque um sustenta as despesas do server e o outro atrai player, porque pra ter player é preciso ter player. Galera acredito que não esteja faltando nada, espero que gostem e tudo que eu poder fazer para nossas melhoras estarei postando, me desculpem meu erros de português mais o que importa aqui é o script está correto, abraços! Créditos: Natanael Beckman LukeSkywalker (Raphael Luiz) .lua 100% Não proíbo ninguém de copia o tópico só peço que onde você adicione inclua os créditos mencionados.1 ponto -
[Pokemon] Servidor Gabrieltxu e suas Versões
Silvaninho reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.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
-
Rozinx Server - Abyss OTServer
VitaoGames reagiu a Animal Pak por um tópico no fórum
Informações: Novos items Novas magias Novos monstros Eventos Mapa Rozinx 8.6 VIP Vocações Rozinx Servidor estável Alguns bugs arrumados porém contém muitos bugs ainda, deixo aqui o download para usarem como base (Se quiserem)! Imagens: OBS: As imagens saíram cortadas porque eu fiquei com preguiça de ajeitar kk ! Depois arrumo. Download Servidor: Mega Mediafire Scan Servidor: Não realizei porque o arquivo ultrapassa o limite de tamanho do virustotal! Créditos: Rozinx Team josediboby2012 SmoOkeR - Por ajeitar o distro, traduzir, e arrumar algumas coisas básicas.1 ponto -
GTA San Andreas Server
92221066 reagiu a Animal Pak por um tópico no fórum
Informações: Mapa próprio; 40+ Quests; Arena PVP; Sistema de Armas; Sistema de Moto, Bicicleta, Carro, Skate; Todos Npcs configurados; Cada vocação tem suas próprias outfits; Jetpack; Todos os items com suas respectivas sprites; Sistema de WoE; Servidor 100% estável sem bugs e erros; Imagens: Download Server: http://www.mediafire.com/?z316hb4caj1ised Scan Server: https://www.virustotal.com/pt/file/876d75ad9a638c4c44c9e772b7cde60a5fb349f332c7cadb7c69a854f9d6e72f/analysis/1364336402/ Dowload Client: http://www.mediafire.com/?kzt230l0aihwh24 Scan Client: https://www.virustotal.com/pt/file/c18d1e7e73620ba8b21b72d455b24ffc393cb61fa4c67d69ed3f427beb41ee8f/analysis/1364336430/ Account do GOD: Account: 258536 Password: zxcvbnm123 Créditos: GTA OT Team Kalito BT SmoOkeR1 ponto -
COM CAST SYSTEM!! Global 8.6 24h PVP IP/SITE:www.tibiaemperium.com Venha Logo Ser Top! Hoje estamos inaugurando o nosso mais novo servidor Emperium nele contém muitos sistemas inovadores, quests, aventuras e uma ótima Staff. Descrição do Server: » Mapa GLOBAL FULL » Guild War emblemas. » Sistemas novos e legais. » Eventos automáticos. Quest: » Quests novas. » Annihilator Quest. » The Demon Oak. » Wrath of the Emperor. » Svargrond e Zao Arena. e muito mais Server Information: Skills: 40x. Magic: 20x. Loot: 2.5x. Eventos: War of Emperium Zombie Event Para maiores informações acesse Server Info Não perca mais tempo Entre e prepare-se para a guerra. Tibia Emperium!1 ponto
-
Subwat Kamikaze V26 - Atualização 24/03
DarkPhanton reagiu a Delaks por um tópico no fórum
Olá pessoal,de volta e irei postar minha versão V26 de Subwat Kamikaze! Atualização V26: Nova vip,Blood VIP. Nova city Blood City Vip Vila de Houses Blood Vip Novas Hunts Novos monstros Eventos Blood Vip: Dice e BP Templo com novos pisos Novo set Blood,somente para Blood Vips Imagens Templo Super VIP Demonstração Blood VIP Novas Hunts/Novos Monsters Download: http://www.4shared.c...ikaze_v26.html? Scan: https://www.virustot...sis/1349299549/ Obrigado galera, essa foi mais uma atualização do Subwat Kamikaze!Rep e comentário para me ajudar !1 ponto -
[Mod - Sistema] Mensagens OFFLINE
kaleudd reagiu a drakylucas por um tópico no fórum
Olá amiguinhos! Peguei o sistema do Ghandi (de outro fórum, polones) e dei uma limpada nele, adaptando-o a meu gosto e agora vou posta-lo. Créditos: Ghandi e Draky Lucas Como funciona? Apenas digite /msg NicknameDoPlayer, sua mensagem aqui exemplo: /msg Draky Lucas, iae carinha que mora logo ali, blz? saudades brother! ^^ dae o jogador Draky Lucas receberia isso: 14:34 [30.03.2013 14:30:40] Draky: iae carinha que mora logo ali,blz? saudades brother! ^^ (Draky é o nick do char que enviou a mensagem) Instalação: Em Mods, crie um arquivo chamado Msgoffline.xml e nele coloque isso: Depois disso, na pasta Data/Logs crie uma pasta chamada offline_msg Reinicie o servidor e teste! ^^ Gostou? REP+ e COMENTE!1 ponto -
[Znote AAC] Naxtie Layout
alissonfgp reagiu a LuckinhaSan por um tópico no fórum
Então aqui vai, um layout novo para ZNote AAC... Divirta-se! Prints Download - Naxtie Layout Créditos - Naxtie1 ponto -
WebSite Spectral vBeta1 Opaa, fala ae xTzords!! Então... Sempre fui muito interessado em aprender a utilizar o Fireworks, mas só ontem eu tomei coragem e baixei, assisti umas vídeo aulas e montei um site informativo que pudesse colocar online para qualquer OT que use Account Manager. Não é muito bonito e nem contem scripts avançadas, eu fiz mais para aprender mesmo, nele fiz o design do site, coloquei uma barra de menu com botões de opções necessárias e coloquei um iframe para não ficar atualizando a página toda vez, assim o site fica mais leve e pratico. Confiram ele hospedado em um host pago: www.spectral-beta1.com sqn' (Esse host free tem limite de páginas, não irão poder acessar todas.) Caso a hospedagem fique ruim, confira nas ScreenShots: Editar o Site: Vocês podem editar tudo nele, pois estarei postando o arquivo.fw.png para quem tem Firework e partes do site em arquivo.psd para mudar o nome no banner ou nome do OT perto dos créditos e para quem não tem nenhum dos dois, também tem as imagens em branco para serem editadas no Paint. Em breve faço um tutorial de como colocar ele em uma hospedagem gratuita, editar todo ele, criar forum no forumeiros e também o "Xat". Compatibilidade com OTs: Todos OTs, Alissow, Baiak, GlobalRL, NaruTibia, PokeTibia, WoDBO e outros... (Qualquer OT com Account Manager) Obs: Depois irei mudar a estrutura do site para que possam mudar o fundo com mais praticidade sem utilizar o Firework, servirá mais para NaruTibia, PokeTibia etc.. Download: 4Shared Scan: Vírus Total Aceito sugestões para melhorar o site. Créditos: Spectrus1 ponto
-
Falaa galera to de volta com mais um script mais dessa vez um pouco mais inovador então gogo . Vá em data / movements / scripts / renome algum arquivo para vocmoney.lua é adicione . function onStepIn(cid, item, pos, frompos) local config = { vocation = 4, -- Needed vocation storage = 13820 -- No change! } if getPlayerVocation(cid) == config.vocation then if getPlayerStorageValue(cid, config.storage) <= -1 then doPlayerSendTextMessage(cid, 22, "You are not Knight, if you pass here again lose 10k!") doTeleportThing(cid, frompos, true) setPlayerStorageValue(cid, config.storage , 1) return true end end if getPlayerStorageValue(cid, config.storage) >= 1 then if doPlayerRemoveMoney(cid, 10000) == TRUE then doPlayerSendTextMessage(cid,22,"You lose 10k!") setPlayerStorageValue(cid, config.storage, -1) return true end end return true end em movements.xml <movevent type="StepIn" actionid="3910" event="script" value="vocmoney.lua"/> Então divirta-se !!1 ponto
-
[Arquivado]Faça parte de nossa história
viniciusdrika reagiu a MarceloCB por um tópico no fórum
vlw ae xD Sistema de cartas do rag é muito maneiro pra builds, outra ideia interessante para melhora-lo seria colocar em certas cartas uma espécie de Condição para ter chance de Drop. Essa condição deixaria mais Desafiante e não seria Revelada, fazendo os players tentarem diversas coisas afim de obter-las, como tentando resolver um mistério. Exemplo: Snake/Cobra - O player teria que ser envenenado pela Snake para ter chance de drop (Isso forçaria ao jogador ir mal equipado) Rat - Antes do player mata-lo ele teria usar um Queijo no Rat pra ter chance de dropar a carta. Orc Berserkers - O Orc terá que ter dado pelo menos 500 de dano antes de ser morto. Dano em outras criaturas seria contado em dobro. Wolf - Ele teria de ser morto com pelo menos 3+ lobos próximos pra ter chance de drop1 ponto -
[Encerrado] (Bug) fishing
BrunooMaciell reagiu a Roksas por um tópico no fórum
Alterei meu post, boa sorte.1 ponto -
Parabens pelo Mapa1 ponto
-
Eu estava pensando , faça assim: function onTimer () doBroadcastMessage("The ExpBug gonna summoned in 2 minutes, run to kill the boss!", MESSAGE_EVENT_ADVANCE) addEvent(summoned, 2*60*1000) end function summoned() local position = {x = 500, y = 400, z = 7} -- Position to summon the exp bug doSummonCreature("Experience Bug", position) doBroadcastMessage("The ExpBug has been summoned! Run.", MESSAGE_EVENT_ADVANCE) end Ai o globalevents.xml a tag troca por: <globalevent name="ExpBug" time="10:58;13:58;15:58;17:58;19:58" event="script" value="expbug.lua"/>1 ponto
-
[Encerrado] ot server sem arquivo s3db
dirceujunior1 reagiu a Roksas por um tópico no fórum
Não é qualquer um, todos tem configurações diferentes, houses, players, etc. Que tal procurar em data/schemas?1 ponto -
[Encerrado] Servidor gabriel
HesLife reagiu a Gabrieltxu por um tópico no fórum
só vc baixar a 3.1 abrir a pasta do client copiar a Dll e colar ela na pasta do client 3.1.11 ponto -
[8.54] Nto RobinHood - Copia do NtoShinobi
jucanando reagiu a SkyDarkyes por um tópico no fórum
Você deve estar fazendo errado alguma coisa,aqui abre normalmente,fale oque da errado.1 ponto -
Poketibia Erondio-Site e Suas versões!
BrunooMaciell reagiu a Furyonsz por um tópico no fórum
Manin isso é muito simples so voce ir no seguinte caminho: Poketibia Erondino Site v13.1\data\talkactions\talkactions.xml e mudar a seguinte linha: <talkaction words="/gogo" access="5" event="script" value="tst.lua"/> no lugar de words="/gogo" troque para words="/cb" e pronto... ficando assim: <talkaction words="/cb" access="5" event="script" value="tst.lua"/> Lembrando no PDA do digitar /cbnomepoke com a inicial tanto maiuscula quanto minuscula que funciona. porem no eron... apos o /cb ou /gogo devera sempre escrever com a inicial maiuscula, ou nao funcionara. Ex. /cb Charmander... Ok /cb charmander... aparece uma ball nao usavel... by Furyonsz1 ponto -
Duvida Num Script aki
448055 reagiu a PsyMcKenzie por uma questão
Lembre-se que são 2 ' == ' Gostei, esta aprendendo com os tutoriais que te passei. É assim que começa cara.1 ponto -
1 - Verificação de variáveis, sempre usamos 2 iguais (==) Troque: if queststatus = -1 then if item.uid = 16591 then Por: if queststatus == -1 then if item.uid == 16591 then 2 - Faltava um "end" no final. 3 - Parabéns, era só isso, agora fazendo do meu jeito ficaria: http://pastebin.com/fjgu5jM3 Não precisa fazer a verificação: if item.uid == 16591 then Se colocar isso no actions.xml na tag do script não precisa por dentro dele E eu acho que: if queststatus == -1 then Só acumula linhas, fazendo do meu jeito fica menor e mais simples, não precisa se preocupar com isso, apenas crie variáveis, se for precisar ou se quiser fazer configurações para o leitor arrumar ~~ Boa sorte com a sua carreira de scripter1 ponto
-
http://www.xtibia.com/forum/topic/201802-classic-premium-v2/1 ponto
-
Gostei dessa ideia de MarceloCB ² O tibia começa mesmo a ficar meio chato porque , muita gente que não sabe jogar porém tem mais tempo para jogar acaba ganhando de players bem mais experientes porém não tem tempo de upar ( faculdade,trabalho, etc.) Com esse sistema o pessoal pega o lvl maximo e começa a matar monstros, mas , para conseguir drops e para ganhar mais dinheiro para comprar itens de War para o seu char..E assim vence na War aquele que eh melhor e que sabe montar sua build e não aquele que tem mais tempo disponivel... Idéia: Cartas de Monstros Função: Cada monstro tem uma porcentagem muito pequena de dropar a carta dele, e carta carta tem uma função, por exemplo: Carta Rat = Aumenta 2 de FOR,Carta Stalker = Aumenta sua atk speed, Carta Dragon= Rouba 5% do seu hit em life, etc. E carta carta vc pode equipar ou na armadura, no helmet, na boots... dependendo da carta. Ex: Rat só pode ser equipado em boots. Tambem cada equipamento tem uma quantidade maxima de sloots de cartas, tipo o steel helmet tem apenas 1 Sloot porem uma boa arm, porem o Leather Helmet tem 2 sloots, com isso dependendo se vc quiser montar um combo de cartas vc iria prefirir o leather helmet... Aonde quero chegar: Isso faz com que os players possam montar inúmeras builds, além de aumentar o mercado do jogo com a venda de cartas, que os players lvl alto percam seu tempo em rats por exemplo em procura de cartas..... Créditos: Eu vi este sistema no MMO Ragnarok, e muita gente joga ragnarok pela inumeras builds que podem ser feitas..1 ponto
-
Idéia: Level/Skill Cap Função: Existir Level/Skill máximo, ou o jogador não adquirir mais Exp com Hunts. Depois disso, ele poderia conseguir se fortalecer mais ainda, porém não caçando. Se conseguirem fazer um sistema, ou de alguma forma recompensar jogadores vitoriosos de Eventos/Wars/Quests seria interessante. Qualquer coisa que a interação dos jogadores fosse mais forte. Recompensas poderiam ser por exemplo, atributos, buffs temporários, itens, etc. Aonde quero chegar: Diminuir o grind no jogo, ou qualquer tipo de coisa repetitiva que beneficie demais os players. Isso provavelmente daria pouco motivo para bots (Em hunts pelo menos). Alias, muitos usam bots por causa de coisas cansativas de serem feitas mas com boa recompensa. Créditos: Muitos RPGs tem esse sistema tentando atingir essa proposta.1 ponto
-
[Duvida] Como colocar para que o mapa seja aberto por completo no minimap
otavio101 reagiu a BananaFight por uma questão
1: Minimap :http://www.xtibia.co...87#entry1499487 e http://www.xtibia.com/forum/topic/211483-mostrando-suas-hunts/ 2: Icones grandes http://www.xtibia.com/forum/topic/211229-duvida-como-aumentar-o-tamanho-dos-icones/ 3: Dentro da pasta "Mod" é só deletar ele, e para que ele não funcione você precisa compilar as sourcer com o protection bot ativado olhe esse sistema, e faça o seu. Como Compilar : http://www.xtibia.com/forum/topic/207691-compilando-ot-client/ 4: podem estar em qualquer tamanho, mais no formato .PNG1 ponto -
function onUse(cid, item, frompos, item2, topos) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doSendAnimatedText(getPlayerPosition(cid),"+"..math.floor(getCreatureMaxMana(cid)).." Mana", math.random(64,65)) addEvent(lx,300,cid) return true end function lx (cid) doCreatureAddHealth(cid,getCreatureMaxHealth(cid)) doSendAnimatedText(getPlayerPosition(cid),"+"..math.floor(getCreatureMaxHealth(cid)).." Life", math.random(144,145)) return true end actions.xml <action actionid="ID-QUE-COLOCO-NO-MAP-EDITOR" script="nomedoarquivo.lua"/> vai fica assim lembrando que esse test tem 520 de mana e 520 de life rsrs1 ponto
-
Defina a pessoa acima com uma palavra
LuckinhaSan reagiu a Piabeta Kun por um tópico no fórum
newfagretardado1 ponto -
Fala galera hoje vim ensinar a colocar aquelas mesagem quando o players entrao..Bem vamos ao que interesa.. em creaturescripts/scripts crie um arquivo .lua com o nome welcome.lua e dentro dele coloque isso: salve o arquivo. em seguida va em creaturescripts.xml e coloque a seguinte tag: Bem Galera e Isso Espero Ter Ajudado.. Creditos Kaiotp MasterDino1 ponto
-
Excelente ideia, pensei em algo semelhante, quanto maior o Arm da armadura.. mais pesada ela será, e esta com um bônus negativo de speed. Vamos tentar unir o útil ao agradável.1 ponto
-
1 ponto
-
ShopGuild Points 100% add em player offline.
SkyLigh reagiu a Natanael Beckman por um tópico no fórum
Não sei se meu shop vai te ajudar, devido outras alterações feitas por mim, mais testa ae: shopguild.php1 ponto -
[MODERN ACC] Modern acc Pokémon by:Junior001
RirukaSannin reagiu a Junior001 por um tópico no fórum
Ok irei fazer isso e obrigado pelo elogio1 ponto -
[Encerrado]Cavaleiros do Zodiaco
JG6 reagiu a Desnecessario por um tópico no fórum
Pronto, acabou com sua carreira que já estava acabada. auhhuauha n quis falar isso =P Recomendo criar 1 fake bob sponja , e um e-mail novo obvio..1 ponto -
Eu desenvolvi um "algoritmo" para decidir as posições de empurrar e puxar das magias, que comparam a posição do jogador para com a posição do alvo. Já do jeito que você quer, eu teria que fazer um novo algoritmo, não com base na comparação de posições, mas sim na direção do olhar do jogador, uma vez que: E no momento estou com preguiça de refazer minha magia que já me agrada como está. Abração.1 ponto
-
Eu coloquei para sair em volta do jogador. Provavelmente, você tem isso isso do spells.xml, ou algo parecido. casterTargetOrDirection="1" É só retirar.1 ponto
-
Muito bom parabéns! Tópico bem formatado.1 ponto
-
Vip System By Mock 100%
SkyLigh reagiu a Natanael Beckman por um tópico no fórum
Executa dentro da tabela accounts.1 ponto -
valeu slider parabéns mano ótimo trabalho estamos chegando o mais próximo da perfeição do PDA talvez seja muita pretensão minha mais essa versão ta muito loca hehehehe muitos bugs retirado e muita coisa nova desde que o brun123 disponibilizou pra geral baixar você merece meu REP+ e nois mano1 ponto
-
Pokemon Erodino V9
jhonnyyakato reagiu a ErondinoSite por um tópico no fórum
Ae cara creditos para Erondino Site ... e essa versao é a antiga ja tem a v10 v9 tem muitos bugs... Edit: Se tiro esse topico do poketibia tutoriais? eles pego do meu site...1 ponto