Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 12/28/11 em todas áreas

  1. DevilMoon

    Lottery System

    Lottery System Explicação: Lottery System é um Sistema que Todos os Players que Estiverem Online no Seu OtServer Poderam Ganhar. O Script Sortea algum Player Online, e Sorteia o Item que o Player Ganhará é claro que ele sorteia so os items que voce escolheu no Script, ele esta arrumado para o evento acontecer em 3 a 3 horas é so arruma na tag o 10800 que no Caso é 3 Horas. Versoes Testadas: TFS> 0.3.4, 0.3.5 e 0.3.6 Forao Testadas! 8.50 :button_ok: 8.52 :button_ok: 8.54 :button_ok: 8.60 :button_ok: Script Em Mods: Vá em Data>Mods crie uma pasta.xml chamada lottery e coloque isto dentro dela: <mod name="Lottery System" version="1.4" author="vDk" contact="zlom290@gmail.com" enabled="yes"> <config name="lottery_config"><![CDATA[ config = { lottery_hour = "3 Hours", -- Time to next lottery (only for broadcast message, real time you can set on globalevents.xml) rewards_id = {2494, 2472, 2514, 2160}, -- Rewards ID crystal_counts = 10, -- Used only if on rewards_id is crystal coin (ID: 2160). website = "yes" -- Only if you have php scripts and table `lottery` in your database! } ]]></config> <globalevent name="lottery" interval="10800" event="script"><![CDATA[ domodlib('lottery_config') function onThink(interval, lastExecution) local list = {} for i, tid in ipairs(getPlayersOnline()) do list[i] = tid end local winner = list[math.random(1, #list)] local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Next Lottery in " .. config.lottery_hour .. "") else doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Next Lottery in " .. config.lottery_hour .. "") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return true end ]]></globalevent> </mod> Feche e Salve! Script Em Arquivos.lua: Se seu OtServer nao Tiver a Pasta Mods, Voce podera colocar normalmente em pastas.lua!! Vá em Data>Globalevents.xml abra-lo e Adicione esta Tag: <globalevent name="lottery" interval="10800" event="script" value="lottery.lua"/> Agora vá em Data>GlobalEvents>Scripts crie uma pasta.lua chamada lottery e coloque isto: -- by vDk local config = { lottery_hour = "3 Hours", -- Time to next lottery (only for broadcast message, real time you can set on globalevents.xml) rewards_id = {2494, 2472, 2514, 2160}, -- Rewards ID crystal_counts = 10, -- Used only if on rewards_id is crystal coin (ID: 2160). website = "yes" -- Only if you have php scripts and table `lottery` in your database! } function onThink(interval, lastExecution) local list = {} for i, tid in ipairs(getPlayersOnline()) do list[i] = tid end local winner = list[math.random(1, #list)] local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Next Lottery in " .. config.lottery_hour .. "") else doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Next Lottery in " .. config.lottery_hour .. "") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return true end Feche e Salve Tudo! Para Sites.php e MySql: Bom Se voce Tem um Site e Quiser adicionar este Script nele, para Anunciar no Seu site quem Ganhou a Loteria entao Siga essas Etapas. (Nao Sei mecher Muinto Nisso.) Crie uma Pasta.php e Coloque o Nome de Lottery (Lottery.Php) e adicione isto: <?PHP $lottery = $SQL->query('SELECT id, name, item FROM lottery ORDER BY id DESC LIMIT 1;'); foreach($lottery as $result) { $main_content .= '<center><h1>Lottery</h1></center> <center>Every X hours we will choose one player who will win random item!<br/> Last Winner: <a href="?subtopic=characters&name='.urlencode($result['name']).'">'.$result['name'].'</a> Item: <i>'.$result['item'].'</i> Congratulations!</center>'; } ?> Abra o Index.Php e Adicione Isto: case "lottery"; $topic = "Lottery System"; $subtopic = "lottery"; include("lottery.php"); break; e Por Ultimo na DateBase, Crie uma e Coloque: CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `lottery`(`id`, `name`, `item`) VALUES (NULL , 'Nobody', 'nothing'); Feche e Salve Tudo, e Esta Pronto. Creditos: Criador do Script = Vdk 100% Criador do Topico = DevilMoon Abraços..
    1 ponto
  2. tibiaa4e

    Portais Da Inquisition

    Estou muito ausente do forum, e hoje me deparei com um probleminha quando fui ajudar uns amigos. Queriamos fazer a inquisition Quest, real. E infelizmente não tenho tempo para criar scripts e acabei me matando para achar um que funcionasse. Lembro que esse script é simples, mas você deverá usar o cerebro. Pois é um pouco complexo entender como implementa-lo. Então irei compartilha aqui ELe é dividido em duas partes que funcionam juntas. Para faze-lo funcionar deve apenas colocar as Actionids necessarias em seus devidos teleports. No exemplo dando ele não usa o teleport convencional e sim o teleport 9773 que é apenas a sprite. Vamos aos scripts: Acrescente em data/libs/050-function.lua (Ou parecido): function doCreatureSayWithDelay(cid,text,type,delay,e,pcid) if delay<=0 then doCreatureSay(cid,text,type, false,pcid) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type, false,pars.pcid) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e,pcid=pcid}) end end Em movements adicione o inquisition.lua e adicione: local config = { bosses={---actionid, posicao para onde ira, valor que colocara, texto de entrada [1001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [1002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [1003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [1004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [1005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"}, [1006] = {pos={x=1064, y=1308, z=13, stackpos=1}, value=6, text="Entering The Shadow Nexus. All hope desapear!"} }, mainroom={---actionid, posicao que ira,menor valor de storage que poder entrar, texto de entrada [2001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [2002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [2003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [2004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [2005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"} }, portals={---actionid,texto de entrada [3000] = {pos={x=1065, y=1086, z=14}, text="Entering Inquisition Portals Room"}, [3001] = {pos={x=1098, y=1214, z=12}, text="Entering The Ward of Ushuriel"}, [3002] = {pos={x=1185, y=1067, z=12}, text="Entering The Undersea Kingdom"}, [3003] = {pos={x=1130, y=1213, z=12}, text="Entering The Ward of Zugurosh"}, [3004] = {pos={x=1148, y=1127, z=12}, text="Entering The Foundry"}, [3005] = {pos={x=1113, y=1254, z=12}, text="Entering The Ward of Madareth"}, [3006] = {pos={x=1043, y=1133, z=13}, text="Entering The Battlefield"}, [3007] = {pos={x=1148, y=1254, z=12}, text="Entering The Ward of The Demon Twins"}, [3008] = {pos={x=1195, y=1201, z=13}, text="Entering The Soul Wells"}, [3009] = {pos={x=1187, y=1213, z=12}, text="Entering The Ward of Annihilon"}, [3010] = {pos={x=1193, y=1254, z=12}, text="Entering The Ward of Hellgorak"} }, storage=56123,---storage usado nos teleportes da sala central walkback="You don't have enough energy to enter this portal",---Messagem que aparece se vc nao poder entrar no teleport da sala central e={} }----nao modificar, se nao tiver o creaturesaywithdelay} function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == TRUE then if(config.bosses[item.actionid]) then local t= config.bosses[item.actionid] if getPlayerStorageValue(cid, config.storage)< t.value then setPlayerStorageValue(cid, config.storage, t.value) end doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1, config.e) elseif(config.mainroom[item.actionid]) then local t= config.mainroom[item.actionid] if getPlayerStorageValue(cid, config.storage)>=t.value then doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) else doTeleportThing(cid, fromPosition) doCreatureSay(cid, config.walkback, 19) end elseif(config.portals[item.actionid]) then local t= config.portals[item.actionid] doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) end end end E em movements.xml: <movevent type="StepIn" itemid="9773" event="script" value="inquisition.lua"/> E em data/creaturescripts adicione o inquisition.lua e coloque: local config = { timeToRemove = 180, -- segundos message = "Go into the teleport in 180 seconds, else it will disappear.", teleportId = 9773, bosses = { -- Nome do monstro, Posicao do teleporte ["Ushuriel"] = { pos={x=1097, y=1214, z=12, stackpos=1}, aid=1001 }, ["Zugurosh"] = { pos={x=1129, y=1213, z=12, stackpos=1}, aid=1002}, ["Madareth"] = { pos={x=1112, y=1254, z=12, stackpos=1}, aid=1003}, ["Annihilon"] = { pos={x=1187, y=1214, z=12, stackpos=1}, aid=1005}, ["Hellgorak"] = { pos={x=1192, y=1256, z=12, stackpos=1}, aid=1006} }, brothers ={ ["Golgordan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Latrivan"}, ["Latrivan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Golgordan"}, brothersArea ={ fromPos = {x = 1139, y = 1244, z = 12}, toPos = {x = 1155, y = 1254, z = 12} } } } local function change(position) doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", 3000) return TRUE end function onKill(cid, target, lastHit) if(config.bosses[getCreatureName(target)]) then local t = config.bosses[getCreatureName(target)] local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(change, config.timeToRemove * 1000, position) elseif(config.brothers[getCreatureName(target)]) then local t = config.brothers[getCreatureName(target)] local brother = getCreatureByName(t.brother) if(isMonster(brother) == true) then if(isInRange(getCreaturePosition(brother), config.brothers.brothersArea.fromPos, config.brothers.brothersArea.toPos) == true) then return TRUE end else local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doItemSetAttribute(teleport, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(removal, config.timeToRemove * 1000, position) end end return TRUE end E em creaturescripts.xml: <event type="kill" name="Inquisition" event="script" value="inquisition.lua"/> E finalmente em cada boss da inquistion deve-se adicionar isso após: </flags> Este codigo: <script> <event name="Inquisition"/> </script> Explicando: Os teleportes da sala principal deverão ter os Actionid respectivos no script. Sendo que cada um levará ao seu devido lugar apenas se o player já tiver passado nele. Quando o boss morre, o script modifica o teleporte para o player poder voltar para a sala principal. -Todo teleporte de Boss deverá ter o actionid 3000 como default. Pois senão o player não poderá voltar. -Existem maiores explicações no proprio arquivo. Creditos:zakius
    1 ponto
  3. FAZENDO SEU OT, BOTANDO ONLINE, LIBERANDO PORTAS, BOTANDO SITE ONLINE, CRIANDO IP FIXO e mais umas coisas Então pessoal, nesse SUPER HIPER MEGA DOUBLE SUPER-SONICO BLASTER 3D JACK BAUER CHUCK NORRIS tutorial, vou ensinar a vocês a como criar um OTserv do zero! (Inclusive SITE!) Primeiro, você precisa baixar esses arquivos aê: OT - Link da seção com downloads: http://www.xtibia.com/forum/forum/596-downloads-de-otserv/ Appserv - Link do download: http://www.appservnetwork.com/ SCRIPTS DO SEU SITE - Link da seção de downloads: http://www.xtibia.com/forum/forum/581-downloads-de-websites/ Só isso : ) Então vamos lá. 1º CRIANDO SEU SERVER Primeiro, extraia o conteúdo do seu OTserver em alguma pasta! Você verá que tem um arquivo com esse nome: config.lua Clique com o botão direito nele, vá em abrir com: Bloco de notas. >>>>> Dentro dele, tem várias coisas.... Só vamos configurar as seguintes coisas: -- server ip (the ip that server listens on) ip = "AQUI VOCÊ POE O SEU IP" -- monster lootrating (how much faster you get items from monsters) lootmul = AQUI VOCÊ POE A PORTECENTAGEM DE CHANCE DE LOOT QUE TEM exemplo: 20 (o máximo é 100!) -- skill multiplier (another multiplier in data/vocations.xml)[/font][/font] skillmul = AQUI TU POE QUANTAS VESES VAI MULTIPLICAR O SKILL exemplo: 6 -- manaspent multiplier (another multiplier in data/vocations.xml) manamul = AQUI TU POE QUANTAS VESES VAI MULTIPLICAR O MAGIC LEVEL exemplo: 5 Bom, alí onde você poe o seu IP, você pega o seu ip nesse site: www.whatip.com Ve seu ip e cola lá. Quando terminar é só clicar em arquivo, salvar e fechar. Pronto, lembrando que toda vez que você desligar e ligar sua internet, o ip muda. Tem que editar lá também. 2º LIBERANDO AS PORTAS 7171 Como iremos fazer isso? Fácil! primeiro você tem que saber de uma coisa, se sua internet for a RÁDIO, você não poderá ter um OTserv. APENAS VIA HAMACHI! Link ensinando a fazer server via hamachi: http://www.xtibia.com/forum/index.php?showtopic=27981 Ok, caso não seja a rádio, vamos lá. Sua internet precisa se conectar por um discador ou já vem conectado direto quando liga?! Se precisar de discador, pra liberar as portas basta fazer isso: Primeiro, Vamos ao painel de controle. Iniciar> Painel de Controle. Clique em FireWall do Windows. Clique na aba Exceções E clique em Adicionar porta. Configure da seguinte maneira. Nome: Open Tibia Porta: 7171 Protocolo: TCP IMAGEM: Dê OK. Pronto, liberou as portas! Mas se é só ligar e já conecta direto sem discador, você tem que saber o modelo de seu modem. Ai você vem nesse site: http://portforward.com/routers.htm Acha o modelo do seu modem, clica. Dai na próxima tela, procure por TIBIA. Ai é só você seguir os passos lá e pronto! Mas não se esqueça de fazer aquilo do FireWall que eu disse ali em cima eim! Pronto! 3º PONDO O OT ONLINE Como faremos isso? Basta entrar na pasta do OT e abrir o arquivo EXECUTÁVEL que tem lá! Não é o Restarter nem o Remote Control! Pronto. Seu server está online! Mas você não tá consseguindo entrar né? É porque você entra pelo ip que você pega desse jeito: Vá ao Iniciar Clique em Executar Digite: cmd Depois digite: ipconfig Ai você pega o Endereço de IP e cola no IPCHANGER e entra! Mas só você que entra por esse IP! Os outros entram por aquele do www.whatip.com 4º AUMENTANDO A EXP Mas a EXP ainda está baixa! Como vamos arrumar? Fácil! Primeiro, vamos até a pasta do OT, Vá na pasta Data Depois, abra o arquivo stages.xml Estará mais ou menos assim: <?xml version="1.0"?> <stages> <stage minlevel="1" maxlevel="999999" multiplier="35"></stage> </stages> Vou explicar: stage minlevel="1" Isso, é o level que a exp começa. No caso, isso é usado para se quiser experiências variadas. No meu caso, eu puis como level mínimo 1. E onde está maxlevel="999999" Isso é o level que a exp desejada chega. Tipo, Quando chegar no level 500, a exp para de ser tal! Entende? Essa parte é a mais importante: multiplier="35" Essa é a EXP! Se você por ali, 50, vai ficar 50 veses mais rápido de upar do que no Tibia normal! Pronto! A exp tá configurada.. Seu server tá online.. quer mais o que?!?! Arrumar a regeneração de mana e hp? Ok né, vamos lá então! 5º ARRUMANDO A REGENERAÇÃO DE MANA/HP Abra a pasta de seu OT, Depois vá na pasta Data! Agora, abra o arquivo Vocations.xml Ai lá tem todas as vocações. Ai cada uma é mais ou menos assim: <vocation id="1" name="Sorcerer" description="a sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="10" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120"> <skill id="0" multiplier="1.5"/> <skill id="1" multiplier="2.0"/> <skill id="2" multiplier="2.0"/> <skill id="3" multiplier="2.0"/> <skill id="4" multiplier="2.0"/> <skill id="5" multiplier="1.5"/> <skill id="6" multiplier="1.1"/> </vocation> Então, Onde está esse: gainmanaamount="50" É a quantidade de Mana que ganha. E onde está esse: gainmanaticks="3" É o tempo que irá demorar para subir a mana, Ai no caso está 3 segundos! -- E para mudar a regeneração de HP, Onde está esse: gainhpamount="10" É a quantidade de HP que ganha. E onde está esse: gainhpticks="6" É o tempo que vai demorar para subir o HP! Então é isso! Edite todas as vocações Salve, resete o Servidor e pronto! Mas po, um server sem GM não dá né?! Vamos aprender a criar um char GM! 6º CRIANDO UM CHAR GM/GOD Primeiro, Vamos ao arquivo do character que irá virar gm. Geralmente, está na pasta Players. Está mais ou menos assim: (cortado algumas partes do script para ficar menos) <?xml version="1.0" encoding="UTF-8"?> <player name=" XTibia" account="58585858" sex="1" lookdir="2" exp="4200" voc="3" level="99999999" access="0" cap="380" maglevel="256" Para mudar para GM/GOD Basta mudar o nome e o Acces! Vamos mudar o Acces para 5 (GOD) E o nome para GM XTibia <?xml version="1.0" encoding="UTF-8"?> <player name="GM XTibia" account="58585858" sex="1" lookdir="2" exp="4200" voc="3" level="99999999" access="5" cap="380" maglevel="256" Os acessos são os seguintes: 5- GOD 4- Senior GM 3- GM 2- Sênior Tutor 1- Tutor Depois de ter mudado isso, Volte a pasta players. Lá, renomeie o arquivo do character para o nome que você pois dentro do arquivo. Agora, saia da pasta players e vá para a pasta ACCOUNTS Localize a account do player que irá virar GM, E vamos editá-la. Vai estar mais ou menos assim: <?xml version="1.0"?> <account pass="senha123**" premDays="0" premEnd="0"> <characters> <character name="XTibia"/> </characters> </account> Mude o nome para o nome que você pois no arquivo do character. Ficando assim: <?xml version="1.0"?> <account pass="senha123**" premDays="0" premEnd="0"> <characters> <character name="GM XTibia"> </characters> </account> Feito! Lembrando que para editar o character, ele precisa estar offline! Tá, agora você ve aqueles IPs bonitos né? Tipo assim: mamae.servegame.com Então vamos fazer! 7º CRIANDO IP FIXO Entre no site www.no-ip.com Logo depois, registre-se. Clicando em sign-up. Preencha como desejar. Depois de ter se cadastrado, Você receberá um email com a confirmação do cadastro. Feito. Agora, entre com seu email cadastrado e senha. Na tela que aparecer, clique em Hosts/Redirects. Clique em ADD Uma nova telá irá aparecer. Em name ponha o que você quiser. APENAS O NOME! Não ponha nada mais! Só o nome. Em baixo, escolha o serviço que você quiser. Exemplo, .servegame.com Pronto. Não mecha em mais nada e clique em Create Host. Feito! Seu IP fixo está criado! Espere 5 minutos antes de usá-lo. Lembre-se de todo dia que resetar sua Internet e seu IP mudar, ir no site do no-ip.com e clicar em manage hosts Acha o seu IP Fixo e clica em modify. Daí muda seu IP! ps: o IP que vai no config.lua é o IP de números. Pronto! Seu IP agora tá bonitinho =) Tá, agora você já tem seu OT, configurado, char GM, IP fixo e server ONLINE! Vamos partir pro site?! Acho que é uma boa : ) 8º INSTALANDO E CONFIGURANDO O APPSERV (SITE) Então, sabe aquele AppServ 2.5.9 que eu falei pra você baixar no início do tutorial? Vamos usa-lo agora! Então, dê um clique duplo no ícone do setup do AppServ e vamos instalar! Siga as fotos, preencha igualzinho! Vou mandar um esquema antes! Desmarca PHP My Admin e My SQL Poe o nome do server NAO PODE TER ESPAÇO! Poe o teu EMAIL em baixo. E poe 8090 na port. Depois dá NEXT deixa ir, e no final desmarca as duas caixinhas! Fotos na seqüencia: 1 2 3 4 Pronto! Depois de instalado, Vamos liberar as portas necessárias! Que no caso é a 8090! Faça o mesmo procedimento da porta 7171! Dito láááá em cima! Sobe um montão pouquinho que você acha eu ensinando a desbloquear! Mas muda o nome da porta poe OT Site. OK? Feito, agora sabe os scripts que eu falei para você baixar?! Então, copia os arquivos do script do seu SITE e cola dentro da pasta WWW Que tá no C:\\\\\\\\Appserv\\\\\\\\www Cola dentro dessa www ai! Ai depois, você abre o config.php E configura ai. Geralmente é fácil! Se tiver algo assim: datadir Siginifica que eles querem o destino da pasta data. Qualquer dúvida na hora de configurar, pode adicionar meu msn! Tá na minha assinatura. Depois de configurar, Volte na pasta Appserv e abra a pasta Apache. Abre o arquivo apache_start Essa é a imagem de quando você abre: Pronto! Agora vai lá e testa pra ver se tá on o seu site. http://SEUIP:8090 Lembrando que os outros vão usar o IP do www.whatip.com ( ou o fixo) Mas você entra com o IP interno do executar>cmd>ipconfig Ok? Então é isso galera! Espero que tenha ficado bem explicadinho! Tirei muito tempo meu pra fazer isso! Mas valeu apena! Queria aproveitar pra mandar um beijo pro Frozen, Rickzs, Powerzin, Rustty, JV e Addict! Qualquer coisa que tenha faltado, fala que eu edito! TUTORIAL 100% BY LASTSOULS! Não tem crédito a ninguém alem de mim. PROIBIDA A CÓPIA NÃO AUTORIZADA! XTibia, a sua comunidade de Tibia e OTserv. 2008
    1 ponto
  4. ninu

    [8.54] Pokémon Ownz V1.0 By Ninow

    -Pokémon Ownz V1.0 By Ninow -Bom pessoal como não está havendo post de Pokétibia ultimamente eu vim aqui e vou postar o meu. Ele na verdade é o Pokémon Maluco, porém eu editei e adicionei várias coisas. -O que tem no servidor? No server foi adicionado: -Reliquia Stone; -Comando !buyvip e !buysupervip -Novos Pokémons: Arceus,Latios,Amethyst Golem,Pirate Gengar e muito mais... -Novas Quests: Reliquia Stone Quest, Legend Box Quest, Secret Box Quest e muito mais... -Super Vip Area: Quando você compra super vip você poderá entrar na super vipa area e lá tem as novas quest o novo npc que vende a Reliquia e respaws de pokémons que não existe para players FREE. -Novos Respawns: Kyogre (Quando morre ira virar blastoise, porém ele tem uma pequena chance de dropar a [Fantastic] Water Stone,Groudon: (Quando morre ira virar magmar porém ele tem uma pequena chance de dropar a [Fantastic] Earth Stone,Rayquaza(Quando morre ira virar ele mesmo porém quando você der catch nele ele vira na forma FAKE, Exemplo: Fake Rayquaza, e tem a mesma chance de dropar a [Fantastic] Leaf Stone, quando usada nele ira virar o Rayquaza com sua força normal, Jirachi,Giratina,Dialga,Palkia a mesma coisa do Rayquaza, porém no Dialga e no Palkia se a stone for usada novamente ele pode virar Primal Dialga ou [Fantastic] Palkia. -Obs: Talvez no lugar de [Fantastic] pode ser [unlockpower], eu editei mas não me lembro bem qual foi as stones. -Obs²: Foi colocado protection zone na frente do CP para não ter lutas e não dar lag. Então foi criado um pvp novo. -Links: Server: http://www.mediafire...09s7bkk9cf7ugny Client: http://www.mediafire...htcv9pydq5ppvg7 -Scan Scan Server 19/02/2012 https://www.virustotal.com/url/3f78166710d6283e08157d8849874ffb419a7da897f9f75e04317bc6e5e17951/analysis/1329693471/ Scan Client 19/02/2012 https://www.virustotal.com/url/c85fe80f80c71fad19bce8b37275bedf59a8155c682fb46883799b8b4c280b36/analysis/ créditos: 70% Server Maluco 30% Eu por editar e colocar coisas novas no server. Pessoal desculpa se o post está desorganizado é o meu primeiro post, não coloquei Ss porque eu não conseguir. Então eu vou deixar sem ss mesmo. (Depois eu coloco SS.) Gostou REP+
    1 ponto
  5. zerosky

    Anti Mass Login / Anti Mage Bomb. 8.60

    Este script funciona da seguinte maneira: Quando o player logar aparecera uma msg em azul no default dele falando quantos chars com o mesmo ip ao dele estão logados, e caso esse numero ultrapasse de 5, o player não conseguira logar esse 6° character ... Vamos começar: Acesse PastaDoServ/Data/CreatureScripts/CreatureScripts.xml adicione esse linha -> Em seguida entre -> PastaDoServ/Data/CreatureScripts/Scripts Adicione um arquivo chamado "playercheck.lua", dentro desse arquivo cola o seguinte codigo O numero 5 que esta em Vermelho nas duas linhas de codigo representa o numero maximo de player com o mesmo ip que podem estar logados simultaneamente, para alterar a quantidade de player com mesmo ip iguais, mude os 2 numeros em vermelho para valores iguais na quantia desejada...
    1 ponto
  6. Gabrielkss

    Sistema De Loteria(Exclusivo)!

    Olá, Vou Ensiar hoje como por Loteria Sytem no seu server Para TFS 0.3.5 (MOD) 1º:Vai em Mods na Pasta do seu ot e Crie um Aquivo Chamado "lottery.xml" (Sem Aspas) e Adicone isso dentro dele : <mod name="Lottery System" version="1.5" author="" contact="" enabled="yes"> <config name="lottery_config"><![CDATA[ config = { lottery_hour = "3 Hours", -- Time to next lottery (only for broadcast message, real time you can set on globalevents.xml) rewards_id = {2494, 2472, 2514, 2160}, -- Rewards ID crystal_counts = 10, -- Used only if on rewards_id is crystal coin (ID: 2160). website = "yes" -- Only if you have php scripts and table `lottery` in your database! } ]]></config> <globalevent name="lottery" interval="10800" event="script"><![CDATA[ domodlib('lottery_config') function onThink(interval, lastExecution) if(getWorldCreatures(0) == 0)then return true end local list = {} for i, tid in ipairs(getPlayersOnline()) do list[i] = tid end local winner = list[math.random(1, #list)] local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")") else doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return true end ]]></globalevent> </mod> 2º: Agora Va em data/globalevents e Adicione "lottery.lua" e dentro dela Adicione : function onThink(cid, interval, lastExecution) local config = { hours = 4, items = {{2472,1},{2160,10},{2494,1},{2514,1}} } local on,list = getPlayersOnline(),{} if #on > 0 then for i = 1, #on do if getPlayerAccess(on[i]) < 3 and getCreatureName(on[i]) ~= "Account Manager" then table.insert(list, on[i]) end end if #list > 0 then local p,r = list[math.random(#list)],config.items[math.random(#config.items)] doPlayerAddItem(p, r[1], r[2] or 1) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(p) .. ", Reward: "..r[2].." "..getItemNameById(r[1]).."! Congratulations! (Next Lottery in "..config.hours.." hours)") end end return true end 3º: Agora Va em data/globalevents/globalevents.xml e Adicione: <globalevent name="lottery" interval="10800" event="script" value="lottery.lua"/> Pronto.... Agora se Quer Adicionar o Sistema de Loteria no Site e o Seguinte : 1º:Crie uma Pasta.php e Coloque o Nome de Lottery (Lottery.Php) e adicione isto: : <?PHP $lottery = $SQL->query('SELECT id, name, item FROM lottery ORDER BY id DESC LIMIT 1;'); foreach($lottery as $result) { $main_content .= '<center><h1>Lottery</h1></center> <center>Every X hours we will choose one player who will win random item!<br/> Last Winner: <a href="?subtopic=characters&name='.urlencode($result['name']).'">'.$result['name'].'</a> Item: <i>'.$result['item'].'</i> Congratulations!</center>'; } ?> 2º: Abra o Index.php e Adicione : case "lottery"; $topic = "Lottery System"; $subtopic = "lottery"; include("lottery.php"); break; 3º: DB: CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `lottery`(`id`, `name`, `item`) VALUES (NULL , 'Nobody', 'nothing'); Pronto Sua Loteria ja esta adc no seu Site Bom Proveito
    1 ponto
  7. HadesBR

    [8.60] Aggrox Yurots

    Aggrox Yurots Edited: Editei o server dia 5/09 e coloquei npcs em portugues e o mapa agora ta sem bugs. Deixei o link antigo para quem quiser. Sem mais, ai está o OT e as informações: - exe - Acc manager eddited - Bug acc manager fixed - enchanted system - Protocolo: 8.6 - items 8.6 - 8.6 outfits y addons(con Wayfarer). - pet system - marryage system - black skull - monster 8.6 - death channel (mostra as mortes) - cidades - 2 vip citys - zonas de eventos - pvp zone - carlin (pvp zone) - 40 tps de monster - muitas quests - monster edited para players high levels - campo de futebol (sistema pisar na bola e ela se move) - zona de carros (usa /up 7 com o god no templo e use os portais) - zona de xadrez - novas voções - spells edited - muitos trainers - quest de addons - 3 raids - sistema anti pk (npc que ataca pks) - npc ajudante (ayudante, da informações do server) - systema de loteria (cada 20 minutos) - outfit doll - comando /attr fixed (para editar ataque de um item /attr set attack) - poll system - comando de ausencia (!afk on !afk off) - bank system por talkaction - comando para enviar mensagem a todos os membros da guild (/guild) - !rank (!rank level , !rank sword ...etc) - !spells E muitos outros comandos! explicação dos comandos: comando de banco: !balance - mostra o saldo. !deposit - Deposita dinheiro. (Exemplo: !deposit 15000) !depositall - Deposita todo dinheiro. !withdraw - Saca dinheiro. (Exemplo: !withdraw 15000) !withdrawall - Saca todo o dinheiro. !transfer - Transfere dinheiro a outro jogador. (Exemplo: !transfer Scorpion, 15000) !transferall -Transfiere todo dinheiro a outro jogador. (Exemplo: !transferall Scorpion) comando de enquetes: !createpoll PREGUNTA?;Opção 1|Opção 2|Opção 3|etc -. !activatepoll ID - Ativa uma enquete com o ID desejado. !cancelpoll - Cancela uma enquete ativa. !seepoll - Mostra as 10 ultimas enquetes, quem escreveu e o id. !seeresults ID - Mostra o resutaldo da enquete escolhida pelo ID !remvotes ID - Remove os resultados de uma enquete especifica. !rempoll ID - Remove a enquete do banco de dados. !votepoll Opcion - vota em uma das enquetes. comando para fazer eventos: /powerevent on o off (/powerevent on - abre o evento /powerevent off - fecha o evento) /evtx (cordenada x onde estara o evento ex: /evtx 160) /evty (cordenada y onde estara o evento ex: /evty 54) /evtz (cordenada z onde estara o evento ex: /evtz 7) !participar (comando para teletransportarse onde esta o evento) Algumas imagens: Novo link para Download: Download E aqui está o link antigo .: Download A unica coisa que fiz foi passar pra portugues, então: Creditos: Aggresor Não sei se pode postar site aqui, qualquer coisa posto o site ofcial do Aggrox server(Que esta em espanhol)
    1 ponto
  8. arkires

    Map De Pokemon

    Ola galera do xtibia hj venho posta um mapa de pokemon que eu tinha começado a fazer so que parei O mapa tem poco spawn, eu acho que house ta tudo certo... pois faz um tempo que não edito o mapa tem as cidades Saffron City Cerulean City Lavender Fuchsia City Celadon City Viridian City Pewter City Vermilion City Cinnabar City ss do mapa Download retirado, link quebrado Creditos vai para quem fez o mapa GreeN... pois não sei o autor se alguem suber post ae para colaca % dos cretido para ele e para mim ter editado mais da maior party do mapa
    1 ponto
  9. PEÇO DESCULPAS, FUI HACKIADO!
    1 ponto
  10. Aula 3 - Criando uma Composição Adobe After Effects Aprendendo a Criar: Para abrir a janela de "Composições" , existe duas maneiras manualmente ou por atalho. Manualmente: Na barra de menu, terá uma opção "Composition", clique e abrirá um sub-menu e em seguida clique na primeira opção "New Composition" Atalho: Pressione as teclas "CTRL + N" Configurações: Tela da Composição Legenda: 1- Nesse lugar será o nome da sua composição, para melhorar a organização não escreva qualquer coisa. 2- 3- A largura do vídeo. 4- A altura do vídeo. 5- É a relação entre largura e alturade um pixelem uma imagem. Square pixels: Filme tem um tamanho de 640x480 ou 648x486 quadro, é de 1920x1080 HD (não HDV ou DVCPRO HD), é de 1280x720 HD ou HDV, ou foi exportado de um aplicativo que não suporta pixels não quadrados. Essa configuração também pode ser apropriado parafilmagem que foi transferido do filme ou para projetos personalizado D1/DV NTSC: Filme tem um tamanho de quadro 720x486 ou 720x480, eo resultado desejado é umaproporção de 4:3 frame. Essa configuração também pode ser apropriado para filmagem que foi exportado de um aplicativo que trabalha com pixels não quadrados, como um aplicativo de animação 3D. D1/DV NTSC Widescreen: Filme tem um tamanho de quadro 720x486 ou 720x480, e o resultado desejado é umf ormato de imagem 16:9 frame. D1/DV PAL: Filme tem um tamanho de quadro 720x576, e o resultado desejado é uma proporção de 4:3 frame. D1/DV PAL Widescreen: Filme tem um tamanho de quadro 720x576, eo resultado desejado é um formato de imagem 16:9 frame. Anamorphic 2:1: Filmagens foram feitas usando uma lente anamórfica filme, ou foi anamorphicallytransferidos de um quadro de filme com uma proporção de 2:1. HDV 1080/DVCPRO HD 720, HD Anamorphic 1080: Filme tem um tamanho de quadro 1440x1080 ou 960x720, e o resultado desejado é umformato de imagem 16:9 frame. DVCPRO HD 1080: Filme tem um tamanho de quadro 1280x1080, eo resultado desejado é um formato de imagem 16:9 frame. 6- A taxa de quadros composição determina o número de quadros exibidos por segundo, ecomo o tempo é dividido em quadros na régua de tempo e exibir o tempo. Em outras palavras, a taxa de quadros composição especifica quantas vezes por segundo as imagens são amostrados a partir dos itens material de origem, e especifica as divisõesmomento em que os quadros-chave pode ser definido. 7- 8- O tempo que o vídeo, geralmente começa no . 9- Duração do video Em Breve termino o tutorial.
    1 ponto
  11. Entrevista com Henrique Moura - Sindarion Fiz essa entrevista com o Henrique Moura, Administrador do Projeto Sindarion, um projeto incentivado do XTibia. Cores de Legenda: AnyurCT Henrique Moura Olá Henrique, vamos começar a entrevista diretamente com o objetivo principal dela, que é a discussão sobre o Sindarion, o seu projeto de Open Tibia. Poderia nos falar um pouco sobre o projeto em geral e suas expectativas para ele? Fala Anyur. Bom, o objetivo primário do projeto é proporcionar a comunidade uma alternativa bem bolada e totalmente gratuita aos servidores que estão no ékz Um mapa novo, uma versão bem legal Coisas novas em geral Pra fugir um pouco do cenário falho de desenvolvimento que estamos tendo ultimamente E acredito que o Sindarion seja apenas um pontapé inicial pra ajudar a galera a também a mudar isso conosco. Visto que é um projeto Open Source e visa o desenvolvimento mutuo da equipe com a comunidade e os usuários do Sindarion. Acredito que o Sindarion será importante para o fórum da mesma forma que foram importantes outros servidores que marcaram o XTibia. Você já deixou claro que o Sindarion é um projeto Open Source, mas creio que muitos não saibam bem a definição sobre isso, pode nos explicar um pouco o que seria? Nosso projeto é feito pela equipe e totalmente dedicado pra comunidade: eles são totalmente livres para editar tudo e fazer uso de tudo conosco. Acredito que tudo que é livre, aberto ao público, chega mais longe e mais forte. Vamos também abrir um servidor com o Sindarion, mas isso se difere do projeto e é algo mais particular à equipe, apesar de todo conteúdo do servidor ser liberado pra comunidade. O conceito open source está ligado com a comunidade, e acredito que é isso que precisamos implantar no XTibia hoje em dia. Você não perde nada sendo open-source: Só ganha! Certo. Você falou que vai liberar o servidor para download na comunidade. Acha que vai ter uma grande aceitação, em meio aos famosos Baiaks e Servidores Globais? Mas é claro! Quem não gosta de mudanças, pró-atividade e inovação? Quando planejei o Sindarion essa foi a minha maior questão e hoje tenho ela plena e resolvida. Acredito que se prezarmos a qualidade, seremos bem aceitados, afinal, é de bom grado o bom conteúdo que pretendemos oferecer. E é inovador! Vamos fugir desse cenário, vamos mostrar pra galera que pode ser feito bastante coisa com força de vontade e liberdade, mostrar que pra fazer só é preciso vontade e disposição, e que tudo que é livre e aberto ganha proporções gigantescas. Inclusive com atualizações constantes, acho que isso atraí bastante atenção... Correto! Agora, você ainda não falou sobre algumas coisas! Qual a versão pretende lançar para download na comunidade e em Servidor privado? Não temos uma grande certeza sobre isso, apesar de já estarmos trabalhando em cima da versão 9.10. Isso pode mudar, é claro. E há alguma previsão para o lançamento? Não totalmente. Mas nosso plano é que após terminamos o mapa começarmos rapidamente a aplicação da parte de programação e scripting. Estamos progredindo bastante no desenvolvimento do servidor, e o mapa está bem definido, só falta ser totalmente completo. Acredito que vai demorar um pouco até a finalização completa do nosso projeto. Mas é caminhando que se chega longe! Em termos de data, acredito que se tudo ocorrer da forma que esperamos, em meados de março ou abril estaremos bem. Certo. Vamos agora à parte que eu mais gosto, e é a que sei mais do projeto. O mapa do Sindarion é bem extenso, são vários continentes, e sei isso até porque o projeto inicial eu quem fiz. Quais as suas expectativas para o mapa? Nós sempre esperamos mais do que realmente temos, isso é um fato. Mas eu tenho boas expectativas para nosso mapa. Ele é bem amplo, extenso e bem caracteristico. Acredito que supriremos toda a necessidade do jogador de entrar em algo e não saber o que ele espera, este elemento surpresa que tanto agrada os tibianos. Estamos trabalhando constantemente para a criação do mapa, e acredito que ele será o real diferencial do Sindarion. Pagaremos pra ver, não é? Hahaha... Contamos com uma real aplicação das características reais ao mapa do Sindarion, principalmente como realce de realidade. Temos bastante diversidade também, e cobriremos todas as áreas que o Tibia explora atualmente: deserto, gelo, florestas, montanhas e hunts dos mais variados tipos. Acredito que estamos bem. Algo que relembra a realidade no Sindarion é o Sistema Sneak Peek. Pode nos contar um pouco sobre ele e as expectativas para a parte de scripting e programação do servidor? O Sneak Peek é uma pré-visualização do que pretendemos fazer no Sindarion, o progresso das coisas que já temos feito e o que ainda está por vir. Teremos muitos sistemas interessantes que serão feitos com o scripting, e esta realmente é uma área que muito nos fascina, e que com trabalho conseguiremos aplicar tudo o que já está previamente trabalhado para o Sindarion, nossos planejamentos. O objetivo principal disso é mostrar pra galera que é fácil imaginar e aplicar. Tenha 100 idéias, e então você terá apenas uma. E é isso que precisamos fazer, inovar. Os sistemas de lumberjacking, forja diferenciada e até mesmo de chuva ou nevasca nos trará bastante dessas inovações. Já se imaginou envenenado e de repente comer uma fruta de um arbustro e isso parar? É o que trazemos dos outros jogos para a realidade do Tibia. Aplicar lendas e etc. O sistema de guerra vai ser algo fantástico! A parte de scripting é algo mais comprometedor do que a de mapping. Mas também mais complicada. Vamos rezar para engrenar e não parar! Imagem Ilustrativa do Sistema Sneak Peek. É realmente fascinante, não jogo outros jogos do mesmo estilo, mas já ouvi falar. Essa realidade que você pretende trazer também ao Sindarion está ligada ao Roleplaying do projeto – aliás, preciso ver o do meu continente, tá difícil fazer sem – e gostaríamos de saber seus planos para o RPG. Está trabalhando sozinho nisso? Como sua natureza, o roleplaying será open source. Acredito que plantando apenas as raízes os usuários possam fazer a árvore crescer e podá-la da forma que quiserem. Estou trabalhando nisso quase sozinho - o Luis Henrique, castiello, me auxilia as vezes no planejamento de ideias - Acredito que a galera vai gostar bastante do que temos à oferecer! Algo bem simples, porém bem feito, bem real e bem aplicado! Quero mostrar pra galera que cada pedra no mapa terá seu significado e mais apesar do que simples, terá. Então acho que precisamos trabalhar muito pra fazer um projeto, além de tudo, consistente. É isso, Sindarion: consistente. Com certeza! Qualquer coisa, poderei ajudar, caso necessite! E é nisso que se resume o Sindarion, certo? É um projeto que se resume em forte RPG e também em Open Source. Bom, vamos deixar de falar do Sindarion agora, e vamos partir para o XTibia. O que você achou de 2011 para o fórum, e o que espera para 2012? O Xtibia em 2011 foi uma vitória! Apesar de cairmos e tropeçarmos em nós mesmos e deixarmos pequenas coisas abalar nossos feitos, acredito que aprendemos muito neste ano e vamos levar de liçao pra 2012! Estou muito ansioso pro XTibia em 2012, acredito que todos vão se empenhar e amar o que está por vir neste final e começo de ano! Vamos finalmente lançar o Portal, melhorar a lista, novo design no fórum e vamos ATOLAR o fórum com conteúdo e organização de acordo com nossos planos. Vamos trabalhar muito em 2012. E além de tudo, pretendemos aguçar nossa relação com o usuário atráves de concursos mais constantes; atrair interesse da comunidade com uma comunicação melhor também, vamos trazer de volta o Podcast e o XTibia nas midias sociais! Sim, concursos são muito importantes, o seu último, em que o vencedor levou um VPS, foi um grande sucesso, parabéns! De fato, e isso só foi possível pelo interesse da comunidade. Acredito que tocamos o ponto certo: todo mundo quer um VPS pra hostear seu primeiro servidor sem dores de cabeça. E este é apenas um dos outros que estão por vir! Em 2012, o XTibia vai ser badalado! Certo. O XTibia caminha para um grande futuro! E agora, estamos terminando essa entrevista, gostaria de dizer mais algumas palavras de consideração final, ou algo que não foi dito? Se sim, conte-nos. Não sei, é dificil encontrar finais para começos como este. Tudo o que você vê é o que realmente é: Cabe você encontrar o significado escondido dentro de todas as coisas e trazê-lo à sua vida! Todos devem ter perseverança, apesar de tudo. E é isso que todos esperamos. Boa sorte nesse projeto, ele com certeza terá um grande futuro! Agora me despeço da entrevista. Até mais! Agradeço bastante a oportunidade de expressar ;P Grande abraço para todos os XTibianos! Pessoal, essa foi a entrevista com o Henrique Moura. Visitem a página do Sindarion clicando aqui. Até Mais Pessoal!
    1 ponto
  12. 050-function.lua function isInBattle(cid) -- blazingfire return isPlayer(cid) and getCreatureCondition(cid, CONDITION_INFIGHT) end in script if isInBattle(cid) then
    1 ponto
  13. va em creaturescript/scripts crie um arquivo lua com nome restore.lua e coloque isto dentro dele agora abra login,lua e adicione essa linha antes do utimo "return TRUE" registerCreatureEvent(cid, "restore") agora acra creaturescript.xml e adicione essa tag <event type="advance" name="restore" event="script" value="restore.lua"/> se n funciona ou n entede como coloca isso so fala
    1 ponto
  14. Oneshot

    Aula 2 - Lógica, Algoritmo E Operadores

    AULA II LÓGICA, ALGORITMO E OPERADORES. Na aula passada, você aprendeu qual a linguagem usada nos servidores, onde surgiu a programação Lua, o que é scripting e como se tornar um scripter. Nessa segunda aula, você irá aprenderá a pensar como um programador, irá aprender a transformar seu raciocínio lógico em uma sequência de instruções e finalmente, com a apresentação do que são operadores, você irá montar um script básico, mas eficaz. Lógica e Algoritmo Toda linguagem de programação, inclusive a Lua, segue uma certa lógica para funcionar corretamente. A isso, damos o nome de lógica de programação. Para fazer um script em Open Tibia não é diferente, você precisa criar uma lógica que relacione sua ideia e o script, uma sequência de instruções que, depois, se torne o script em si. Isso é um algoritmo. Pegaremos agora um exemplo bem simples de funcionamento em um servidor - Uma pedra mágica que usada, verifique o sexo do jogador e troque para o sexo oposto. Um algoritmo como esse acima, também pode ser montado na forma de um gráfico, veja abaixo: Algoritmos são uma grande ajuda para os scripters. Eu, por exemplo, sempre monto uma imagem parecida com essa quando o script que vou fazer é um tanto mais elaborado. Agora, com a apresentação dos conceitos abaixo, você irá transformar esse algoritmo em um script funcional. Operadores aritméticos e relacionais. Nessa parte da aula, você irá aprender um pouco mais sobre os operadores aritméticos, aqueles bem conhecidos das suas aulas de Matemática. Os operadores relacionais que comparam coisas (hm...). Os operadores aritméticos, como você deve bem conhecer, fazem operações de cálculo simples. Creio que você os conhece. Você pode testar o funcionamento dos operadores com um comando print() e alguns números, veja abaixo: print(4+7) -- Retorna 11 print(7-4) -- Retorna 3 print(5*4) -- Retorna 20 print(4/4) -- Retorna 1 Os operadores relacionais são muito usados também no âmbito da matemática. Na programação, eles comparam dois tipos de objetos e retornam apenas valores true e false. Os operadores relacionais são listados abaixo: == ~= > < >= <= O operador de igualdade (==) compara o tipo dos argumentos envolvidos, caso o tipo seja diferente, será retornado false. Caso o tipo seja igual, ele compara o valor dos argumentos e novamente, se o valor é diferente, é retornado false, caso os dois valores sejam iguais, será retornado true. O operador de diferença (~=) é simplesmente a negação do operador de igualdade (==). Ou seja, ele retornará true para tipos ou valores diferentes e false para tipos/valores iguais. Os operadores de ordem (>, <, >=, <=) funcionam simples como na matemática. Se os dois operadores são números, então eles são comparados como tais. Eles só irão retornar true, caso a comparação seja realmente verdadeira e false caso não seja. Veja abaixo: Abaixo você irá aprender sobre os operadores de controle, eles criam condições e só executam algo associado a eles caso a condição seja verdadeira. Estou falando de: if, elseif e else. Operadores de Controle A estrutura de um operador de controle pode retornar qualquer valor. Tanto os valores false e nil são considerados como falsos e todos os outros valores diferentes são considerados como verdadeiros. A estrutura de controle criada a partir de um operador, só executa o bloco de código associado se o valor retornado pela condição seja verdadeiro. Existem cinco operadores de controle: if, elseif, else, repeat e until. Os dois últimos não serão explicados nessa aula. O operador if significa 'se', remete a uma estrutura sintática e condicional, você já deve ter visto uma sintaxe do tipo: Vou grifar em vermelho uma parte muito importante dessa frase e em azul seu bloco: Veja que para a parte em azul ocorrer, então a condição tem que "retornar" verdadeiro, ou seja você tem que estudar muito. Na programação Lua não é diferente, não. O bloco azul é simplesmente todo o código que será executado se a condição relacionada ao if retornar verdadeiro: if true then bloco end Pois é, para algo retornar verdadeiro, você deve fazer uma comparação, usando nada mais que os operadores relacionais. Note que: O if precisa de um then, significa então. Ele fecha a estrutura sintática do if, nunca esqueça dele. E também o end que fecha a verificação do if. 1 == 1 2 == 2 3 >= 3 4 <= 4 getPlayerMoney(cid) >= 40 Mas para toda condição, existe uma chance de ocorrer algo contrário, certo? Por exemplo, se o camarada não tivesse estudado, nada ocorreria? Na programação, nós tratamos dessa sintaxe com o else. O else é simplesmente a negação do if, se a construção do operador if retorna falso, então o que estiver atribuído ao else será executado. Vamos completar a frase: E no nosso código ele pode ficar assim: if false then bloco else bloco2 end Note que: O else não precisa de then. Como ele é a negação do if, ele "meio que" se aproveita do then e end do if. E por último, temos o controlador Elseif, ele é bem simples, é usado quando você tem muitos outros blocos para outras várias condições. Mas os blocos ligados ao elseif só irão ser executados quando o bloco do if retornar falso, parecido com o funcionamento do else. Juntando tudo em um código de simples entendimento: if false then bloco elseif true then bloco2 end Note que: O elseif precisa de then igual ao if, mesmo que seja auxiliar ao if, ele é uma condição totalmente diferente. Ele só não precisa do end. Para finalizar a aula, quero apresentar dois operadores lógicos muito usados com operadores de controle, são eles: and e or. Os dois são usados quando você precisa fazer múltiplas verificações em uma estrutura condicional. A diferença é básica: O operador and exige que todas essas condições retornem verdade para executar o bloco, já o operador or exige que uma apenas seja verdade. Eu costumo usar muito o and quando vejo essa situação abaixo: if true then if true then bloco end end if true and true then bloco end E uso o operador or, quando vejo que um elseif foi empregado para executar um mesmo bloco que um if. if false then print(1+1) elseif true then print(1+1) end if false or true then print(1+1) end Finalizamos por aqui Será que vocês conseguem fazer a "pedra do sexo" com os conhecimentos aprendidos aqui? Vou deixar algumas instruções, boa sorte! Só clique na resposta, se você conseguiu fazer. Um abraço, até a próxima aula.
    1 ponto
  15. Chaito123

    Dúvida Ao Adicionar Código Html

    Me adicione no msn já que não consiguiu fazer, chaitohelper@hotmail.com
    1 ponto
  16. e so alterar essa parte catchratepara a quantidade de chance que vc quer
    1 ponto
  17. japavrb15

    Script Item Q Da Acesso A Vip 4

    Não meu querido. La tem dois script. Um deles é tile com Storage.
    1 ponto
  18. Crytos

    Dúvida De Como Juntar 2 Mapas.

    Abra o RME com o mapa que você quer copiar, após isso vá em File/Open e procure o mapa em que você quer colar outro. E então ficara os dois no mesmo RME, só que em abas diferentes: Feito isso vá no mapa que você quer copiar, no canto terá um quadradinho, clique nele, o mesmo vai virar um lápis; Continue no mapa que deseja copiar, e então segura shift e arraste o mouse por cima da área que você quer copiar, ele ficará escuro após selecionar como na foto abaixo: Depois é só apertar ctrl + v no mapa que você quer colar.
    1 ponto
  19. ss soque tipow edita pra coloca mais npcs monstros etc pq metade das casas d ekonoha estao sem nada so um quadro dai fica dificil Atenciosamente, Juan500.
    1 ponto
  20. ÓTIMO tutorial REP you!
    1 ponto
  21. Olá XTibianos, vou fazer um tutorial de uma coisa que muitos já sabem fazer, mas que nem todos fazem direito. Vou ensinar a criar monstros, explicado e com fotos (8.54+). Vamos fazer por partes do monstro: Vou citar apenas em que você pode mecher e explicar as partes: Monster name: nessa parte você escolhe o nome do seu monstro. Name Description: é a descrição do nome. Vou dar um exemplo: o monstro se chama Teste XTibia, mas se o nome da descrição for apenas 'teste', quando você der look no monstro vai aparecer apenas "You see teste", então ponha o nome bem relacionado ao nome original para não ficar feio. Race: é a raça do monstro. não faz muita diferença, mas escolha uma raça que combine com seu monstro. Experience: é a experiencia que ele deixa quando morre, é claro. Speed: é a velocidade do seu monstro. A velocidade usada (380) é a de Bosses, como Annihilon. Dependendo do monstro, não deixe muito alta. Mana Cost: é a quantidade de mana que você precisara para sumonar o monstro, se ele for sumonavel ou convencivel. Health now: é a quantidade da vida que seu monstro terá quando surgir. Health max: é a quantidade total de vida do seu monstro. Para que ele venha com a vida cheia, coloque a mesma quantidade nos 2 lugares. Looktype: é a aparência do seu monstro. Head, Body, Legs ... são as cores do monstro, e em corpse, você coloca o ID do corpo que o seu monstro se tornará quando morrer. Target change: é o intervalo em que o monstro terá a chance de mudar o alvo que está atacando, e a chance de isso acontecer, você escolhe. Strategy attack: vai variar de acordo com o seu monstro **. Vou explicar o que é cada 'flag': Summonable: aqui você pode escolher se seu monstro poderá ser sumonado com a magia Utevo Res ". Attackable: aqui você escolhe se seu monstro poderá ser atacado ou não. Hostile: vai variar de monstro em monstro. Aqui você escolhe se o monstro será hostil ou não. Illusionable: sempre mechi aqui e nunca notei nada de diferente. Então, não descobri pra que serve. Se alguem souber poste. Convinceable: se ele poderá ser sumonado com a runa de convencer monstros. {Caso você queira que ele seja sumonavel mas não seja hostil, mude a quantidade de mana necessária para sumoná-lo, coloque "summonable="1" e em convinceable="0"} Pushable: se o monstro poderá ser empurrado. Canpushitens: se ele pode remover itens que estejam no caminho para ir até os players. Canpushcreatures: se ele pode remover ou matar as criaturas que estão no seu caminho para chegar até o player. Targetdistance: se ele poderá atacar os players a distância. [ATENÇÃO, TODAS AS FLAGS ACIMA, SÃO REPRESENTADAS POR SIM OU NÃO. "1" = SIM || 0 = NÃO] Staticattack: novamente, outra coisa que você muda variando com o tipo do monstro. Runnonhealth: agora, você pode escolher com quantos de sangue o monstro vai fugir. Caso não queira que ele fuja, deixe o número 0. Melee: nesta parte você escolhe os skills do monstro, como se ele fosse um player. O "Attack" seria o ataque de uma arma que o monstro estaria usando, porém, quanto maior os skills e attack, maior serão os outros hits do monstro além de physical. Atributekey: nesta parte, você escolhe o efeito que terá o hit do monstro. Exemplo: o 'groundshaker', irá funcionar como um 'exori mas'. Segunda attributekey: você escolhe o elemento que surgirá ao o monstro usar o ataque. Defenses armor: funciona como se o monstro estivesse usando uma armadura com 'x' defesa. Defense: funciona como o skill de shielding do monstro. Healing (a defesa mais comum de todas): o defesa do monstro se healar, tem sua chance de acontecer e seu intervalo de acontecer. Na foto o monstro pode healar entre 400 | 900. Speed (segunda mais comum): como o healing, tem sua chance e intervalo de acontecer. Se o monstro usar esta defesa, ele altera sua velocidade original para a velocidade 'x' que está marcada na defesa. Duration: é a duração em que alguma defesa vai durar. É marcada em milisegundos, ou seja, a duration 7000 durará 7 segundos. Não há muito o que dizer desta parte. Explicação 'elements': nesta seção você vai escolher se o monstro será forte ou fraco contra algum elemento. Quando mais o elemento for NEGATIVO ( - ), mais o monstro será fraco. Quando mais o elemento for positivo (não é marcado por nada), mais forte o monstro vai ser contra tal elemento. [OS ELEMENTOS SÃO ESCOLHIDOS POR ATÉ - 100 OU 100] [CASO VOCÊ QUEIRA QUE UM MONSTRO SEJA 0% (NEM FORTE NEM FRACO), VOCÊ DEVE REMOVER A LINHA DELE DOS ELEMENTOS]. Imunity lifedrain: significa que você e nem outros monstro poderão drenar vida deste se o parâmetro estiver como "1". Imunity invisible: significa que ele vai poder invisibilidade, se o parâmetro estiver como "1" [PARA QUE UM MONSTRO FIQUE IMUNE A ALGUM ELEMENTO, NA TAG "ELEMENTS" VOCÊ NÃO PRECISA POR FORÇA 100, BASTA ADICIONAR UMA LINHA NO "IMMUNITIES" COM O ELEMENTO] Exemplo: Yell="1": significa que o monstro vai 'gritar' como nós quando clicamos no icone do 'adjust volume' in game. Como adicionar outras vozes: adicione mais uma tag de 'voice sentence' na linha de baixo. Exemplo: Bom, todo mundo pode configurar o loot da forma que prefirir. Quando menos a chance, mais dificil será o drop do item. <inside>: é usado depois de alguma bag, backpack ou outro container, para que represente que é para os próximos itens aparecerem dentro do "container". </inside>: usado para fechar o "container" em que você adicionou lá em cima (bag, backpack ...) </item>: o </item> você só usa SE USAR algum tipo de container no corpo. Caso não use nada, não precisará colocar isto. </loot>: fecha o loot do monstro. </monster>: ultima coisa que você deve por em um monstro. Serve para dar 'fim' ao monstro. _____________________________________________________________________________ Espero ter ajudado :weight_lift:. Se gostou, dá um REP+ ai, não custa nada Caso tenha alguma coisa errado, me avisem.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...