Ir para conteúdo

gareme

Campones
  • Total de itens

    9
  • Registro em

  • Última visita

Posts postados por gareme

  1. Algumas dicas para a galera se tornar PRO, em Mapper!

     

    Dicas

     

    1º-

    Quando vc está sem critividade de algo, está afim de fazer um mapa

    legal, mais não sabe o certo, entre em outros OTServs com mapas

    proprios e tente cata ideias la, porem, nunca copie, pois copiar é

    errado e ridiculo, pois significa q vc é um mapper sem imaginação e

    criatividade.

     

    2º-

    Fassa caminhos para outros lugares não sendo retos, com curvas, eu

    sempre vejo em OTServs akelas cidades com a ruinha deles sempre reta,

    reta toda vida, issu é meiu futuristico e n combina com o jeito RPG e

    MEDIEVAL de Tibia.

     

    3º-

    Elabore bem suas cidades principais, pois é la que vai dar o foco do

    seu serv quando um player entra. Coloque bastante detalhes, deixe

    bunito, coloque os minimos detalhes possiveis, como foi dito no Art.

    acima, n faça os caminhos da sua cidade principal reto e deixei em

    curvas, formatos estranhu, tbm coloke nature, umas montanhas. Elabore

    bem as casas da cidade, como todos sabemos, dentro de uma cidade o

    CENTRO dela é sempre onde tem as partes mais elegantis e em sua volta

    sao as casas mais meldicres, pequenas e sem elegancia, isto conta na rl

    como no jogo tbm .

     

    4º-

    Em volta das suas cidades coloque vilarejos e perigo perto dos

    vilarejos, q qr dizer que tudo fora de uma cidade ja é aventura !. Qnd

    vc criar um CONTINENTE n deixe ele quadrado, como exemplo, entre em

    sites de OTServs ou do Tibia msm e procure pelo link MAP do SERV e olhe

    suas bordas e é claro que olhe o MAP de um OTServ dedicado e decente.

     

    5º-

    Sempre crie bixos novos, novas actions que se relacione com o RPG do

    seu serv, por exemplo: vc cria um NPC q fala ter visto uma criatura

    orrenda andandu pelas voltas da TAL cidade. Ai vc elabora um bixo que

    tenha aparencia feia, como exemplo o Ancient Scarab (eta bixinhu feio),

    dps que vc criar o monstro elabore uma action que veje ele, exemplo,

    fassa uma quest que cata uma pedra q xama o nome do bixo, vamus usar o

    nome como LILITH, ta ai pega a pedra e da look nela: You see a Lilith

    imblkac., Bom ai vc fais uma biblioteca que contenha um livrinho que

    explique o que é imblkac e aonde pode ser utilizado, ai dps de sober

    tudo vai até o lugar indicado, poem a mueda no tal lugar q foi dito e

    aparecera uma caverna algo assim (para issu use o comando MoveON e

    MoveOff). Issu ficara bem elaborado com o RPG, invente quests assim,

    invente quests q com alavanca que fais criar uma piramide , Eu ja fiz

    uma que cria uma piramide da terra, + de 100KB de script aeiuaieh.

     

    6º-

    Não fassa novidades seguidas de novidades em seu mapa, sempre fassa uma

    grande novidade em uma distancia de tempo entre uma a outra. Como

    exemplo: Se vc fizer um update em seu mapa de uma grande area, evite

    fazer outros updates de grande area nos proximos 10~15 dias, se caso

    isso ocorrer, o player fica sem chances de explora a area que vc feis

    antigamente e vai logo explorar a recentemente, sem saber dos misterios

    e quests bem elaboradas da antiga area :/

     

    7º-Dos mais inutil, é o melhor.

    A

    frase acima quer dizer que por exemplo, vc pode faze uma NPC que vende

    flores, ai se me pergunta, UEH npc q vende FLORES, qm vai kere compra

    issu ??. Ok, ninguem pode kerer comprar coisas dela, mais invente uma

    quest BOA elaborando ela na HISTORIA, isso trara mais aventura, emoção

    e valor ao seu server :].

     

    8º-

    Nunca coloke bixos fortes proximo as cidade, como exemplo o map do

    YUROTS, vc saia da city e ja tinha 1 montainha q começava com trolls e

    dava em warlock o.O, bom nesse caso o kra crio uma montanha muito

    pekena, algo q n vai dar suspense pro player, assim ele explora sem

    prevenção e sem kere se fode :/. Bom se caso kiser colocar um WARLOCK

    perto da city, fassa uma cav, uma montanha, uma tower grande e

    elaborada, para q de cada ves mais suspense de onde o player esta indo

     

    9º-

    Crie casinhas ou torres de lazer, q n contenha nada, mais q contenha

    moveis, algumas actions de lazer, sei la de soccer, bingo e etc :X,

    crie casinhas e shops tbm com lazer, e nunca em ipotse alguma, deixe as

    quadrada, sempre coloke algo para modifikar, dexando aconchegante e

    detalhada xD.

     

    10º-

    Fassa coisas diferentes em seus serv's, sempre inove, nunca iguale ou

    copie. Invente citys elaboradas, como exemplo, juntar CARLIN com KAZZ

    do tibia, daria uma city legal neh, dentru e fora xD.

     

    11º-

    Sempre que vc kiser inovar sua cidade principal, para parar de enjoar o

    serv, crie uma historinha do pq a mudança e etc, destrua ela fazendo

    detalhes de destruição, invente q uma invasao do sul de orcs atkou ela

    matandu tudo e todos e etc. Sempre inove, pq inovação eh ir para a

    frente .

     

    12º-

    Sempre que possivel, fassa suas cidades com conectividades a outras

    cidades, caso contrario, a cidade q n esta junta é outro continente ou

    uma ilha.

     

    13º-

    Sempre que fizer uma cidade, evite, jamais coloke bixos fortes nas

    proximidades das cidades, caso isso ocorra, fexe a faxada dessa area

    com montanhas e etc... e fassa uma nova entrada mais longe.

     

    14º-

    Sempre em suas cavs, coloke bixos q eleve q eleve a força do mapa e de

    seus perigos. Exemplo: vc tem uma cav de dwarf e dentro da sua cav tem

    1 buraco para descer mais profundamente, assim q esse player desce ele

    tromba com 1 drag, isso eh ridikulo pois se eh 1 cav de dwarf, tera

    mais nubs do q hl nela neh...

     

    15º- Fassa o comercio principal sempre perto do Dp ou do TEMPLO para ficar mais facil a localidade dos npcs...

     

     

    Espero que gostem.

  2. Construções

    no Tibia são como na vida real, não se pode viver sem elas. No inicio o

    jogador nasce no templo, que é talvez o lugar mais importante e

    visitado do servidor, todos passam por ele no começo e é onde você

    renasce depois de morrer, também é onde você foge daquele Power abuser

    fdpfdpfdpfdp. Em segundo lugar na escala de importância vem o Depot, é

    onde você guarda seus itens mais preciosos (se você não tiver uma casa),

    onde você faz aquela feirinha maneirinha pra vender seus itens. Temos

    também as casas, que, com camas, servem pra regeneração fácil e rápida

    de stamina ou soul, servem pra guardar seus itens, fazer inveja em quem

    você odeia, brincar de casa da Barbie, etc. Enfim, construções no Tibia

    são mesmo importantes.

     

     

     

    Templos:

     

    Começaremos pelo, na minha opinião, o lugar mais importante de um servidor.

     

    Como você já sabe, templos são aqueles lugares sagrados onde os players nascem e renascem.

     

     

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

     

     

    Claro que esta não é uma

    construção, mas templos não precisam ser necessariamente quadrados,

    simétricos e "sem vida". A historia do templo acima, por exemplo, diz

    que no passado ele era um "templo de verdade", mas devido a ataques

    simultâneos de bombas atômicas Magos, o templo

    foi destruído, e mesmo assim os habitantes não quiseram abandoná-lo, por

    ser um templo sagrado e possuidor de forças sobrenaturais.

     

     

     

    Templos e construções são

    diferentes em cada tipo de cidade, cidades desérticas tendem a ter

    templos com paredes no estilo "egypt wall" e "egypt Stone wall", cidades

    em selvas usam templos de bambu, as construções em cidades de gelo

    possuem paredes de madeira, e assim sucessivamente.

     

    Dica: Em cidades pequenas, templos devem ser pequenos, e em cidades grandes, templos devem ser grandes, respectivamente.

     

     

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

     

     

     

     

     

    Este é o templo do popular Alissow

    OTS, como podem ver é um templo simples e totalmente retangular, mas

    mesmo assim não é feio – pelo menos eu acho que não é. Vocês aprenderão

    mais sobre construções quadradas um pouco mais abaixo.

     

    Casas:

     

     

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

     

     

     

     

     

    As casas precisam ter:

     

    - Pilares, para garantir o sustento da construção, como está indicado em vermelho. Isto não é obrigatório, apenas se tiver algo "solto por ai" que necessite alguma sustentação.

     

    - Janelas nos telhados e nas paredes – indicação em verde - dão um charme a mais na sua casa, além de permitir a visualização dos players de dentro e fora da mesma.

     

    - Uma porta, logicamente, para o player entrar e sair da casa.

     

    - E por ultimo enfeite da maneira que quiser, sempre respeitando a coerência (Leia Detalhes mais abaixo).

     

     

     

    Telhados:

    Em sua construção você pode usar diversos tipos de telhados, em casas pequenas eu aconselho o seguinte tipo de telhado:

    Em construções maiores, é aconselhável usar um telhado baixo, pois o alto pode ficar alto demais, resultando num mapa feio.

    Também é válido utilizar pedras e plantas nos telhados.

    Detalhes:

    Detalhes em construções são uma coisa muito simples, geralmente usa-se tochas, janelas, portas, musgos, flores, plantas, etc.

    OBS: Tochas em paredes de madeira são prejudiciais à saúde das mesmas, por isso o ministério da saúde recomenda o uso de lâmpadas.

     

    Construções Grandes:

     

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

    Os castelos (eu adoro esse mapa)

    também fazem parte do mundo tibiano, os reinos precisam ter uma

    fortaleza que sirva de uma moradia digna para o seu rei e seus

    seguidores. Observe como as paredes foram usadas.

     

    Tamanhos.

    Eu vejo bastante gente fazendo

    casas extremamente gigantescas, quadradas ou curvas e com apenas uma

    porta e uma janela. A não ser que você queira criar monstros lá dentro,

    13x13 SQMs já é grande o suficiente para uma casa grande e 6x7 para uma

    casa normal.

     

    Se você não sabe o que é SQM, preste atenção:

    SQM significa Square Metre, que em português, significa Metro quadrado. Passando para o Tibia, um player ocupa um SQM, assim como um Demon (ou qualquer outro monstro) também ocupa um SQM. Um pedaço de chão ou uma parede Também possuem 1 SQM.

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

    Uma casa grande no tamanho certo.

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

    Uma casa grotesca do jeito totalmente errado.

     

    Quadrado X Curvo:

    Quando se fala em construções

    quadradas a primeira coisa que vem à cabeça é que é um mapa muito

    simples, feio e... quadrado (what?), o que não é verdade. Construções

    curvas atrapalham a jogabilidade, acompanhe.

     

    Mapa 1:

    A primeira vista você poderá dizer que é um mapa muito simples, feio e quadrado, continue acompanhando.

     

    Mapa 2:

    Qual dos dois mapas é mais bonito?

    Qual deles suporta mais items? Com certeza é a casa quadrada certo? Por

    isso pense bem antes de querer fazer algo "incomum".

    Isso não quer dizer que deve-se fazer tudo quadrado, algumas curvinhas às vezes também deixam um mapa bonito:

    Aplicando a "técnica do olha e faz" também é possível fazer lindas construções e com formas diferentes. Observe:

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

     

    Depois:

    É certo que

    um servidor sem construções não funcionará como deveria, ele ficará

    totalmente incompleto, os players precisam de um lugar bonito pra

    renascer, precisam de um depósito seguro para guardar seus items,

    precisam de casas para viver e de qualquer forma essas construções

    precisam ser bem feitas, seja para atrair o publico ou para simplesmente

    mostrar seu trabalho.

  3. Como vocês podem perceber, não sou muito experiente, porém, pretendo ajuda-los ao máximo.

     

     

    Vamos lá

     

     

    Você irá precisar:

     

    Arquivos da versão 8.4 ( )

    Map de alguma versão anterior à 8.4

    Remere´s Map Editor ( )

     

     

    Passos:

    Primeiramente abra o Remere's Map Editor.

    Vá em File

    Clique em Open

    Abra o seu map da versão anterior

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

    Com o map aberto, clique em Map

    Em seguida clique em Properties

    Com o Map Properties aberto vá até Client Version e selecione 8.4 e dê OK

    Pronto, seu map agora está pronto para ser editado na versão 8.4.

  4. Cavernas

     

     

    Segundo o Wikipedia, Caverna (do latim cavus, buraco), gruna ou gruta (do latim vulgar grupta, corruptela de crypta)

    é toda cavidade natural rochosa com dimensões que permitam acesso a

    seres humanos. Podem ter desenvolvimento horizontal ou vertical em forma

    de galerias e salões. Ocorrem com maior freqüência em terrenos formados

    por rochas sedimentares, mas também em rochas ígneas e metamórficas,

    além de geleiras e recifes de coral.

     

     

    No caso do Tibia, é a mesma coisa, sofrendo apenas algumas modificações:

     

    Cave (do português caverna)

    é toda cavidade com aspecto natural e rochoso geralmente abaixo do

    Floor 7, não necessariamente, e com dimensões que permitam acesso a um

    Character. Podem ter desenvolvimento horizontal ou vertical em forma de

    galerias e salões. Podem abrigar desde monstros "inofensivos" como os

    Ratos, até perigosos Dragões cuspidores de fogo e Demônios vermelhos.

     

     

     

     

     

    A entrada de uma caverna no mundo real.

     

     

     

     

     

     

     

     

    A entrada de uma caverna no mundo Tibiano.

     

     

     

    Existem diversos tipos de cavernas, algumas são criadas pelo mapper

    pela natureza e outras são "cavadas" por Dwarfs, por exemplo, para

    servirem como minas, ou por Trolls, para servirem de moradia.

     

    Cavernas naturais – ou seja, aquelas que não foram cavadas pelo homem,

    Dwarf ou Troll – são geralmente imperfeitas, não são retas.

     

    Além disso, em cavernas não existe flora nem donatela,

    pois plantas precisam fazer fotossíntese, o que na ausência de luz é

    impossível. Mas quando se trata de cavernas tibianas, podemos abrir

    algumas exceções, até para deixar a caverna mais bonita. Alguns tufinhos

    de grama, musgos nas paredes e plantas de pântano são bem vindos. É possível colocar também alguns Cogumelos alucinógenos Gigantes.

     

     

     

     

     

     

     

     

    É um cogumelo gigante dentro de uma caverna. Improvável? Em "Viagem ao Centro da Terra", de Júlio Verne, não é.

     

     

     

     

    Também pode-se colocar algumas raízes, mas nunca, em hipótese alguma, coloque árvores em uma caverna.

     

     

     

     

     

    Cavernas bem detalhadas e bem feitas são praticamente obrigatórias em

    servidores de respeito, já que são nelas que o player vai passar grande

    parte do tempo.

     

     

     

     

    Observe bem nesta caverna natural como foi colocado cada item, pode-se

    dizer que é uma caverna bem detalhada, mas sem um grande exagero.

     

    Mas nem todas as cavernas precisam ser necessariamente cheeia de

    detalhes, até porque você vai se cansar de tanto detalhar caves, e elas

    podem ficar cansativas para o jogador também, que grande parte das vezes

    passa pela cave e nem nota que existe um "tratamento especial".

     

     

     

     

    Pelo que podem ver acima é uma caverna natural simples, harmônica, mas não deixa de ser bem feita, no meu ponto de vista.

     

     

     

     

    Agora observe o mapa acima. Percebe como os caminhos são retos? Esta é uma mina feita logicamente por Dwarfs alguns morrem no processo de cavação para extrair minérios e outras coisas.

     

     

     

     

    Cachoeiras em cavernas também são uma boa idéia.

     

     

     

     

     

     

     

    E para finalizar, mais um exemplo de caverna, com plantas de pântano,

    musgos nas paredes, raízes e cogumelos gigantes – como dito

    anteriormente.

    Te Ajudei? DA REP+

  5. Funcionamento do script:

     

    O sistema de tempo em tempo manda player para o player perguntando o resultado de uma conta de soma (números da conta gerados pelo sistema), então se o player não responder ou responder muitas vezes erradas ele é mandado para alguma prisão, algum lugar fechado, sem saída e automaticamente depois de um certo tempo configurado no script o player pode sair da prisão indo direto para o templo.

     

    Adicionando o sistema em seu server:

     

    Primeiramente, adicione as tags em creaturescripts/creaturescripts.xml:

    <event type="login" name="AntiBotLogin" script="antibot.lua"/>

    <event type="logout" name="AntiBotLogout" script="antibot.lua"/>

    Logo após disso, faça um arquivo em creaturescripts/scripts chamado antibot.lua contendo:

     

     

     

    -- Yunie Anti Bot System

    -- Mundotibiabr Forum

    -- mundotibiabr.forumeiros.com

     

    -- configs

    local mintoanswer = 2 -- minutes to answer anti bot system

    local delayAntiBot = 30 -- minutes of delay of delayAntiBot

    local maxgroupid = 1 -- groupid higher than this don't have antiBotSystem Activated

    local prisionpos = {x=83,y=122,z=7} -- if don't answer, go to this pos(local onde e a prisao ou ate pode ser uma montanha mas tem q ser area PZ(igual nos dp)

    local prisionminutes = 10 -- time inside the prision

    local templepos = {x=95, y=117, z=7} -- after the prisionminutes, back to this position (localização de seu templo)

    -- end configs

     

    -- local variables

    local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}

    -- end local variables

     

     

    function onLogin(cid)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    if (prisioned == 1) then

    local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)

    local timenow = os.time()

    if (timenow >= prisiontime) then

    setPlayerStorageValue(cid,storages.prisiontime,0)

    setPlayerStorageValue(cid,storages.prisioned,0)

    doTeleportThing(cid, templepos)

    else

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    doTeleportThing(cid, prisionpos)

    end

    end

     

     

    if (delayAntiBot <= mintoanswer) then

    debugPrint("Error! Anti Bot System debugs: variable delayAntiBot need to be higher than mintoanswer.")

    else

    if (getPlayerGroupId(cid) <= maxgroupid) then

    antiBotEvent = addEvent(antiBot,1000,{cid=cid})

    else

    doPlayerSendTextMessage(cid, 20, "People with group ID higher than ".. maxgroupid .." don't have this system.")

    end

    end

    return TRUE

    end

     

    function onLogout(cid)

    stopEvent(prisionEvent)

    stopEvent(antiBotEvent)

    stopEvent(checkAnswerEvent)

     

     

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    return TRUE

    end

     

    function antiBot(parameters)

    local cid = parameters.cid

     

    local playerpos = getCreaturePosition(cid)

    local playerpz = getTilePzInfo(playerpos)

    local playername = getPlayerName(cid)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    if (playerpz ~= 1 and prisioned ~= 1) then

    local first_num = math.random(1,9)

    local second_num = math.random(1,9)

    local result = first_num+second_num

     

    setPlayerStorageValue(cid,storages.first_num,first_num)

    setPlayerStorageValue(cid,storages.second_num,second_num)

    setPlayerStorageValue(cid,storages.result,result)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Hello, "..playername.."! You have ".. mintoanswer .." minute(s) to answer how much is ".. first_num .." + ".. second_num ..". To answer say: !antibot \"number.")

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Example: 20+20 = 40, then you would say !antibot \"40.")

    checkAnswerEvent = addEvent(checkAnswer,mintoanswer*60*1000,{cid=cid})

    end

    antiBotEvent = addEvent(antiBot,delayAntiBot*60*1000,{cid=cid})

    end

     

    function checkAnswer(parameters)

    local cid = parameters.cid

    local first_num = getPlayerStorageValue(cid,storages.first_num)

    local second_num = getPlayerStorageValue(cid,storages.second_num)

    local result = getPlayerStorageValue(cid,storages.result)

    local answer = getPlayerStorageValue(cid,storages.answer)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    local wrong_answers = getPlayerStorageValue(cid,storages.wrong_answers)

    if (wrong_answers > 3) then

    doTeleportThing(cid, prisionpos)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,1)

    setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))

    doPlayerSendTextMessage(cid, 20, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s) because answered many wrong times.")

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    else

    if (answer ~= 1 and prisioned ~= 1 and result > 0) then

    doTeleportThing(cid, prisionpos)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,1)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))

    doPlayerSendTextMessage(cid, 20, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s).")

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    else

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,0)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: You are ok, but in some minutes you are going to be asked again.")

    end

    end

    end

     

    function checkprisioned(parameters)

    local cid = parameters.cid

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)

    local timenow = os.time()

    if (prisioned == 1) then

    if (timenow >= prisiontime) then

    doPlayerSendTextMessage(cid, 20, "You had completed your time here in the prision! You may now relog to go to the city.")

    else

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    end

    end

    end

     

    Configure as variáveis em negrito de acordo com seu servidor e gosto, salve e feche.

     

    Em talkactions/talkactions.xml adicione a seguinte tag:

    <talkaction words="!antibot" script="antibot.lua"/>

    Agora faça um arquivo em talkactions/scripts chamado antibot.lua contendo:

    -- local variables

    local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}

    -- end local variables

     

    function onSay(cid, words, param)

    local first_num = getPlayerStorageValue(cid,storages.first_num)

    local second_num = getPlayerStorageValue(cid,storages.second_num)

    local result = getPlayerStorageValue(cid,storages.result)

    local answer = getPlayerStorageValue(cid,storages.answer)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

     

    param = tonumber(param)

     

    if (prisioned ~= 1 and answer ~= 1 and result > 0) then

    if (param == result) then

    if (getPlayerStorageValue(cid,storages.wrong_answers) <= 3) then

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Right answer, thank you for answering.")

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.answer,1)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    else

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Right answer, but you had already answered more than 3 wrong times.")

    end

    else

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Wrong answer!")

    wrong_answers_now = getPlayerStorageValue(cid,storages.wrong_answers)

    setPlayerStorageValue(cid,storages.wrong_answers,wrong_answers_now+1)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: You had already got ".. getPlayerStorageValue(cid,storages.wrong_answers).." wrong answers! The limit is 3.")

    end

    end

    end

    "[Tutorial]Yunie Anti Bot System "Super tutorial pra server dedicados e a quem enterresar

    por SilvioRicardo em Sab 16 Jan 2010, 13:53

     

    .Funcionamento do script:

     

    O sistema de tempo em tempo manda player para o player perguntando o resultado de uma conta de soma (números da conta gerados pelo sistema), então se o player não responder ou responder muitas vezes erradas ele é mandado para alguma prisão, algum lugar fechado, sem saída e automaticamente depois de um certo tempo configurado no script o player pode sair da prisão indo direto para o templo.

     

    Screenshoot do sistema:

     

     

    Expandir esta imagemReduzir esta imagem Ver em tamanho real...

     

     

    Adicionando o sistema em seu server:

     

    Primeiramente, adicione as tags em creaturescripts/creaturescripts.xml:

     

     

    Código:

    <event type="login" name="AntiBotLogin" script="antibot.lua"/>

    <event type="logout" name="AntiBotLogout" script="antibot.lua"/>

     

     

    Logo após disso, faça um arquivo em creaturescripts/scripts chamado antibot.lua contendo:

     

     

     

    <BLOCKQUOTE>

     

    Código:

     

    -- Yunie Anti Bot System

    -- Mundotibiabr Forum

    -- mundotibiabr.forumeiros.com

     

    -- configs

    local mintoanswer = 2 -- minutes to answer anti bot system

    local delayAntiBot = 30 -- minutes of delay of delayAntiBot

    local maxgroupid = 1 -- groupid higher than this don't have antiBotSystem Activated

    local prisionpos = {x=83,y=122,z=7} -- if don't answer, go to this pos(local onde e a prisao ou ate pode ser uma montanha mas tem q ser area PZ(igual nos dp)

    local prisionminutes = 10 -- time inside the prision

    local templepos = {x=95, y=117, z=7} -- after the prisionminutes, back to this position (localização de seu templo)

    -- end configs

     

    -- local variables

    local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}

    -- end local variables

     

     

    function onLogin(cid)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    if (prisioned == 1) then

    local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)

    local timenow = os.time()

    if (timenow >= prisiontime) then

    setPlayerStorageValue(cid,storages.prisiontime,0)

    setPlayerStorageValue(cid,storages.prisioned,0)

    doTeleportThing(cid, templepos)

    else

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    doTeleportThing(cid, prisionpos)

    end

    end

     

     

    if (delayAntiBot <= mintoanswer) then

    debugPrint("Error! Anti Bot System debugs: variable delayAntiBot need to be higher than mintoanswer.")

    else

    if (getPlayerGroupId(cid) <= maxgroupid) then

    antiBotEvent = addEvent(antiBot,1000,{cid=cid})

    else

    doPlayerSendTextMessage(cid, 20, "People with group ID higher than ".. maxgroupid .." don't have this system.")

    end

    end

    return TRUE

    end

     

    function onLogout(cid)

    stopEvent(prisionEvent)

    stopEvent(antiBotEvent)

    stopEvent(checkAnswerEvent)

     

     

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    return TRUE

    end

     

    function antiBot(parameters)

    local cid = parameters.cid

     

    local playerpos = getCreaturePosition(cid)

    local playerpz = getTilePzInfo(playerpos)

    local playername = getPlayerName(cid)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    if (playerpz ~= 1 and prisioned ~= 1) then

    local first_num = math.random(1,9)

    local second_num = math.random(1,9)

    local result = first_num+second_num

     

    setPlayerStorageValue(cid,storages.first_num,first_num)

    setPlayerStorageValue(cid,storages.second_num,second_num)

    setPlayerStorageValue(cid,storages.result,result)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Hello, "..playername.."! You have ".. mintoanswer .." minute(s) to answer how much is ".. first_num .." + ".. second_num ..". To answer say: !antibot \"number.")

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Example: 20+20 = 40, then you would say !antibot \"40.")

    checkAnswerEvent = addEvent(checkAnswer,mintoanswer*60*1000,{cid=cid})

    end

    antiBotEvent = addEvent(antiBot,delayAntiBot*60*1000,{cid=cid})

    end

     

    function checkAnswer(parameters)

    local cid = parameters.cid

    local first_num = getPlayerStorageValue(cid,storages.first_num)

    local second_num = getPlayerStorageValue(cid,storages.second_num)

    local result = getPlayerStorageValue(cid,storages.result)

    local answer = getPlayerStorageValue(cid,storages.answer)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    local wrong_answers = getPlayerStorageValue(cid,storages.wrong_answers)

    if (wrong_answers > 3) then

    doTeleportThing(cid, prisionpos)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,1)

    setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))

    doPlayerSendTextMessage(cid, 20, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s) because answered many wrong times.")

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    else

    if (answer ~= 1 and prisioned ~= 1 and result > 0) then

    doTeleportThing(cid, prisionpos)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,1)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))

    doPlayerSendTextMessage(cid, 20, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s).")

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    else

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    setPlayerStorageValue(cid,storages.answer,0)

    setPlayerStorageValue(cid,storages.prisioned,0)

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: You are ok, but in some minutes you are going to be asked again.")

    end

    end

    end

     

    function checkprisioned(parameters)

    local cid = parameters.cid

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

    local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)

    local timenow = os.time()

    if (prisioned == 1) then

    if (timenow >= prisiontime) then

    doPlayerSendTextMessage(cid, 20, "You had completed your time here in the prision! You may now relog to go to the city.")

    else

    prisionEvent = addEvent(checkprisioned,1000,{cid=cid})

    end

    end

    end

     

    </BLOCKQUOTE>

     

     

     

     

     

     

     

     

     

    Configure as variáveis em negrito de acordo com seu servidor e gosto, salve e feche.

     

    Em talkactions/talkactions.xml adicione a seguinte tag:

     

     

    Código:

    <talkaction words="!antibot" script="antibot.lua"/>

     

     

    Agora faça um arquivo em talkactions/scripts chamado antibot.lua contendo:

     

     

    Código:

    -- local variables

    local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}

    -- end local variables

     

    function onSay(cid, words, param)

    local first_num = getPlayerStorageValue(cid,storages.first_num)

    local second_num = getPlayerStorageValue(cid,storages.second_num)

    local result = getPlayerStorageValue(cid,storages.result)

    local answer = getPlayerStorageValue(cid,storages.answer)

    local prisioned = getPlayerStorageValue(cid,storages.prisioned)

     

    param = tonumber(param)

     

    if (prisioned ~= 1 and answer ~= 1 and result > 0) then

    if (param == result) then

    if (getPlayerStorageValue(cid,storages.wrong_answers) <= 3) then

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Right answer, thank you for answering.")

    setPlayerStorageValue(cid,storages.wrong_answers,0)

    setPlayerStorageValue(cid,storages.answer,1)

    setPlayerStorageValue(cid,storages.first_num,0)

    setPlayerStorageValue(cid,storages.second_num,0)

    setPlayerStorageValue(cid,storages.result,0)

    else

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Right answer, but you had already answered more than 3 wrong times.")

    end

    else

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: Wrong answer!")

    wrong_answers_now = getPlayerStorageValue(cid,storages.wrong_answers)

    setPlayerStorageValue(cid,storages.wrong_answers,wrong_answers_now+1)

    doPlayerSendTextMessage(cid, 20, "Yunie Anti Bot System: You had already got ".. getPlayerStorageValue(cid,storages.wrong_answers).." wrong answers! The limit is 3.")

    end

    end

    end

     

     

    Neste script acima não precisa configurar nada.

    As instruções são todas dadas dentro do jogo para os players durante a execução do sistema.

     

    Espero que usem

     

    Gente eu axei esse script em um forum br tbm mas não tenho os creditos para postar.. e script de gringo isso^^

    eu usei e gostei funfa no tfs 8.4

    Te Ajudei? DA REP+

  6. Fala Galera,

     

    Esse tutorial ensinar a você colocar Yalahar Outfit no seu OT (somente em ots 8.40).

     

    -=!COMEÇANDO!=-

     

    Abra a "pasta" do seu ot, abra a pasta "data" e depois "XML".

    Agora abra a outfits.xml como bloco de notas.

     

    Para obter Yalahar Outfit Female, Acrescente isso abaixo disto que está escrito:

    <!-- Female outfits -->

    <outfit type="0" looktype="324" enabled="1" name="Yalaharian" premium="1"/>

     

    Pronto, agora seu ot tem Yalaharian Outfit para characters female, Mas eu quero pra male! Calma o do male está aqui:

    Acrescente isso abaixo disto que está escrito:

    <!-- Male outfits -->

    <outfit type="1" looktype="325" enabled="1" name="Yalaharian" premium="1"/>

     

    Agora feiche o arquivo salve-o antes, e pronto.

    Agora seu OT (8.40) está com Yalahar Outfit!

    feito por mim

    te Ajudei? DA REP+

  7. Tutorial Ensinando como adicionar monstros ao Simone editor.

     

    Bom andei pesquisando por ai e descobri que muita gente que cria monstros

    personalizados não sabem adicionalos no mapa, alguns tentam adicionar

    pelo map-spawm, mas sempre quando o map era salvo eles tinha que fazer

    isso denovo. Por isso resolvi postar um tutorial explicando como

    adicionar esses monstros no Simone editor.

     

     

    Inicio

     

    Apos ter criado o monstro desejado, va na pasta do Simone map editor, e procure pelo arquivo Itens.xml

     

    Abra-o e adicione isso (se colokar numa linha no meio do documento nao tem

    erro, mas ficara desorganizado, algumas pessoas, preferem colocar os

    novos monstros ou no começo ou no final.)

     

    X" name="Y" type="monster"/>

     

    =-Explicando-=

     

    Configurando a variavel X:

    A letra X esta representando o ID que voce escolhera para esse seu novo

    monstro, escolha um ID inexistente, pois se o id escolhido já existir

    nao funcionara. Por exemplo: Suponhamos que eu tenha escolhido o ID

    4549. Então ficara assim:

     

     

    QUOTE

    4549" name="Y" type="monster"/>

     

     

     

     

     

     

    Configurando a variavel Y:

    A letra Y representa o nome do arquivo que voce colocou no seu monstro

    personalizado. Digamos que eu criei um monstro chamado "Supreme

    Knight", neste caso eu adicionarei este nome no local onde esta a

    variavel Y. Ficando assim:

     

     

    QUOTE

    X" name="Supreme knight" type="monster"/>

     

     

     

     

    Finalizando

     

     

    Bom depois de seguir estes passos a linha adicionada ficara por exemplo assim:

     

     

     

    QUOTE

    4549" name="Supreme knight" type="monster"/>

     

     

     

    para localiza-lo no map editor basta você ir em View>Windows>Jump to

    id..>ai coloque o id escolhido que o map editor autmaticamente ira

    selecionar para voce.

     

     

     

     

    e isso ai, espero ter ajudado em algo com esse tutorial..

     

    Tirando o id maximo.

     

    Tem um arquivo na sua pasta do simone que se chama Materials.xml, abra-o

    com o bloco de notas e procure uma linha com esses códigos:

     

    Depois de achar vá onde esta escrito toid="4551" e mude para 5000, ante (")

    sem parenteses, só salvar depois disso e usar normal.

  8. LISTA DE UTILITÁRIOS

     

    ===>Spells Maker By Sir (Cria Magia!)

    Link: http://malware-site.www/924c3c

     

    ===>NPC Maker By Sir (Cria NPC!)

    Link: http://malware-site.www/3eda8c

     

    ===>Quest Maker By Skoll (Cria Quest!)

    Link: http://malware-site.www/eadf00

     

    ===>Actions Maker By Skoll (Cria Action!)

    Link: http://malware-site.www/f7a96e

     

    ===>OT Item Editor (edita items)

    Link: http://malware-site.www/5fec30

     

    ===>Level Door Maker By Skoll (Cria porta que só pode entrar a partir de um level determinado!)

    Link: http://malware-site.www/2a25a6

     

    ===>Dark Account Creator (Criador manual de Contas!)

    Link: http://malware-site.www/c9dbc0

     

    ===>Tibia.dat Editor (Modificador do tibia.dat)

    Link: http://malware-site.www/c37a4f

     

    ===>Tibia Music (Criar Innstrumentos!)

    Link: http://malware-site.www/f62fd8

     

    ===>[Retirado] List Loader

    Link: http://malware-site.www/5e8bef

     

    ===>Deletador de Players (Deleta players pelo Nome!)

    Link: http://malware-site.www/d453b1

     

    ===>Item Editor [7.8] (Cria/Modifica Itens [7.8])

    Link: http://malware-site.www/8f910d

     

    ===>Xogum Quest Maker [7.8] (Cria Quest [7.8])

    Link: http://malware-site.www/0ab576

     

    ===> Auto Restarter (Reinicia automaticamente seu Ot, se ele cair!)

    Link: http://malware-site.www/69e183

     

    ===>Tibia Pic Editor (Criador de Subsolos!)

    Link: http://malware-site.www/b614a8

     

    ===>Verificador de IPs By Linkz (Ot Checker!)

    Link: http://malware-site.www/3aa134

     

    ===>Site de DLL's (Site com todas DLL's)

    Link: http://www.dll-files.com/

     

    ===>Minimiza OT no Tray - KSTray (Coloca o Ot na barra do Windows!)

    Link: http://malware-site.www/bc180d

     

    ===>Monster Maker (Cria Monstros, Precisa ter um OtServer)

    Link: http://malware-site.www/78f843

     

    ===>Player Editor (Edita Players, Precisa ter um OtServer)

    Link: http://malware-site.www/8377b2

     

    ===>Beds Maker (Cria Camas, Precisa ter um OtServer)

    Link: http://malware-site.www/0d3c2d

     

    ===>House Maker (Cria Casa, precisa ter um OtServer)

    Link: http://malware-site.www/50a20d

     

    ===>Acc/Player Maker (Cria Player/Acc, precisa ter um OtServer)

    Link: http://malware-site.www/7c1e66

     

    ===>NPC Seller Maker (Cria NPC de Venda, precisa ter um OtServer)

    Link: http://malware-site.www/1766dd

     

    ===>NPC Barco Maker (Cria NPC de Barco, precisa ter um OtServer)

    Link: http://malware-site.www/8e9af3

     

    ===>NPC Spaw Maker (Cria Spaw de NPC, pode ser feito com o Ot Desligado)

    Link: http://malware-site.www/0bbdc8

     

    ==>NPC Maker-Outfit (Cria o arquivo do NPC.xml c/ painel de OutFits)

    Link: http://malware-site.www/6c4e5a

     

    ===>OTS IP Checker (Monstra Info de Servidores, ou seja, se ele está On e/ou Off)

    Link: http://malware-site.www/4b18ba

     

    ===>Readables Maker (Cria Readables das placas, para indicar o caminho)

    Link: http://malware-site.www/4e2032

     

    ===>Fist Ip-changer 7.9 (Muda o IP, para entrar em um Ot [7.9])

    Link: http://malware-site.www/b504a3

     

    ===>Tiles Maker - Gera todos os tiles para areas Premmy/Arena, basta colocar a posição dos 4 cantos. (Cria área Novas!)

    Link: http://malware-site.www/6193f9

     

     

     

    OUTROS:

     

    ===>Estabilizador de IP

    Instrução:

    Quer que seu IP criado pelo NO-IP se torne definitivo, sem problemas

    dele expirar ou criarem outro com o mesmo nome e apagarem o seu? então

    baixe esse programa!

    Link: http://malware-site.www/d5c43d

     

    ===>Hamachi

    Instrução: Quer hostear um OT com net compartilhada! Utilize esse programa!

    Link: http://baixaki.ig.com.br/download/Hamachi.htm

     

    ===>RapidUploader

    Instrução: Um programa muito bom! Faz upload de seus arquivos, inclusive fotos, em alta velocidade.

    Link: http://malware-site.www/bad08d

     

    ===>Biblioteca ALLL Tibia 0.4

    Instrução: Uma das melhores bibliotecas de Tibia já lançadas!Com todos os itens, incluindo anéis!

    Link: http://malware-site.www/6c3c5e

     

    ===> Anti Nuker [No-HACK]

    Tá cansado daqueles Hackers de OtServ??Então esse programa é a solução!

    Link: http://malware-site.www/6f68ac

    Obs:a maioria e para versoes antigas mais algumas dam para 8.5

  9. Primeiros passos

     

    Obviamente, antes de tudo, você precisa de todos os arquivos necessários para rodar o servidor no seu computador e um registro no fórum. Para se registrar gratuitamente clique aqui (informe um e-mail real no campo, pois você precisará confirmar o registro). Depois que você criar o registro, clique aqui para entrar na seção "Download de OTServs", baixe o servidor da versão que mais lhe chamar a atenção (para ter certeza se ele é bom, examine as respostas dos outros membros e o próprio tópico) e descompacte ele (todos os servidores da seção vêm compactados em arquivos RAR/ZIP, clique aqui e baixe o programa para descompactá-los) no diretório Meus Documentos ou qualquer outro de fácil acesso.

    Você verá vários arquivos e pastas, mas por enquanto não mexa nem exclua nada. Dê um duplo clique no arquivo config.lua que está localizado no diretório matriz, e faça-o ser executado com o notepad (bloco de notas).

     

     

    Segundo passo

    Configurando o config.lua

     

    Este é o arquivo principal do servidor, pois é lá que você irá configurar a maioria dos itens para iniciá-lo corretamente. Normalmente, a variável da configuração é auto-explicativa, mas é tudo em inglês. Se você tem um bom conhecimento da língua, você entendará o que cada item configura, se não tem, não se preocupe, estarei mostrando abaixo um exemplo de config.lua comum, e explicando o que cada item faz:

     

    Servidores 8.0 ou menos:

    -------- config.lua --------

    -- Arquivo de configuração para o OTServ --

    ----------------------------

     

    -- Local do mapa (só mude se você possuir um mapa novo)

    map = "data/world/test.otbm"

     

    -- Nome do servidor

    servername = "Yurots BETA 1.0"

     

    -- Localização

    location = "Brasil"

     

    -- IP do servidor (Seu IP, clique aqui e saiba qual é seu IP)

    ip = "localhost"

     

    -- Porta do servidor (normalmente não precisa mexer, só se sua internet/firewall bloquear tal porta)

    port = "7171"

     

    -- URL do site do servidor

    url = ""

     

    -- Nome do dono do servidor

    ownername = "Magus"

     

    -- E-mail do dono do servidor

    owneremail = "magus@######"

     

    -- Tipo do mundo (escolha como será o método de batalhas do seu servidor)

    -- Opções: pvp, no-pvp, pvp-enforced

    worldtype = "pvp"

     

    -- Tempo de espera para utilizar uma magia/runa e outra em milissegundos

    exhausted = 1000

     

    -- Tempo de espera para utilizar uma magia/runa não-agressiva e outra em milissegundos

    exhaustedheal = 1000

     

    -- Adicionar quantos milissegundos se o jogador já estiver cansado (exhausted) e tentar usar uma magia/runa? (1000 = 1 segundo)

    exhaustedadd = 200

     

    -- Quanto tempo o jogador tem que ficar longe de batalhas poder entrar em locais sagrados e sair do jogo (1000 = 1 segundo)

    pzlocked = 5*1000

     

    -- Período de alugel da casa (daily = diário, weekly = semanal, monthly = mensal)

    -- Opções: daily, weekly, monthly

    houserentperiod = "weekly"

     

    -- motd (caixa de mensagem que pode aparecer antes de abrir a lista de personagens)

    motd = "Bem vindo ao Yurots BETA 1.0, entre e divirta-se!"

    motdnum = "1"

     

    -- Mensagem do ínicio, que irá aparecer quando você entrar no jogo

    loginmsg = "Ajude noso server reportando os bug * !report *"

     

    -- Quantas tentativas de login inválidas até o servidor bloquear o IP da pessoa

    -- coloque 0 para desabilitar

    logintries = 5

     

    -- Permitir clones? (Múltiplos logins do mesmo personagem)

    -- Opções: 0 (não), 1 (sim)

    allowclones = 0

     

    -- Número máximo de jogadores permitidos no servidor (lembre-se que, quanto maior este número, maior será a quantidade de lag do servidor, dependendo da sua máquina)

    maxplayers = "150"

     

    -- Tipo de SQL (mexa aqui somente se seu servidor utilizar este tipo de banco de dados)

    -- Opções: mysql, sqlite

    sql_type = "mysql"

     

    --- Configurações para MySQL (ignore se estiver usando SQLite/XML)

    sql_host = "localhost"

    sql_user = "root"

    sql_pass = ""

    sql_db = "otserv"

     

    --- Configurações para SQLite (ignore se estiver usando MySQL/XML)

    sqlite_db = "db.s3db"

     

    -------------------------------------------------------------------------------------------------

    ---------------------------- Configurações básicas ----------------------------

    -------------------------------------------------------------------------------------------------

     

    -- Sim = yes, Não = no

     

    -- Nome do mundo (mostrado ao lado dos personagens da lista, Ex.: Magus (Secura))

    worldname = "Magnet"

     

    -- Tempo de "server save" (ele não fecha o servidor como no tibia, é só um controle para previnir lags desnecessários)

    autosave = 3

     

    -- Sistema de cap ativado? (yes/no)

    capsystem = "no"

     

    -- anti-afk - Tempo máximo para um jogador ficar ocioso antes de ser derrubado pelo servidor (1 = 1min)

    kicktime = 20

     

    -- Quantos summons (utevo res) os jogadores podem ter

    maxsummons = 3

     

    -- Itens máximos permitidos para colocar no depot (dp)

    maxdepotitems = 1000

     

    -- Aprender magias automaticamente (no) ou comprá-las (yes)?

    learnspells = "no"

     

    -- Você quer que todos os jogadores possuam 'premmium account'? (yes/no)

    freepremium = "no"

     

    -- Remover munição (bolts/arrows) conforme usada (yes) ou deixá-las infinitas (no)?

    removeammunation = "yes"

     

    -- Remover cargas de runas (sd/hmm/gfb) conforme usada (yes) ou deixá-las infinitas (no)?

    removerunecharges = "yes"

     

    -- Habilitar hotkeys? (yes/no)

    itemhotkeys = "yes"

     

    -- Jogadores podem atirar runas em jogadores pela janela de batalha? (yes/no)

    battlewindowplayers = "yes"

     

    -- Usar "Account Manager"? (yes/no) (clique aqui e saiba o que é "Account Manager")

    accountmanager = "yes"

     

    -- Summons (utevo res) seguem seus mestres à qualquer lugar? (yes/no)

    summonsfollow = "yes"

     

    -- Permitir troca de outfits? (yes/no)

    outfitchange = "yes"

     

    -------------------------------------------------------------------------------------

    ----------------------------------- Multiplicadores -----------------------------------

    -------------------------------------------------------------------------------------

     

    -- Multiplicador de experiência (Ex.: Se deixar 30, os monstros darão 30 vezes mais experiência que o Tibia global; Rats darão 150exp e Demons darão 180000exp)

    expmul = 30

     

    -- Multiplicador de experiência para pvp-enforced

    expmulpvp = 3

     

    -- Multiplicador de loot dos monstros (Ex.: Se deixar 2, os monstros darão 2 vezes mais rápido o loot do que no Tibia global)

    lootmul = 2

     

    -- Multiplicador de skills (Ex.: Se deixar 80, os jogadores irão ter seus skills aumentados 80 vezes mais rápido que no Tibia global, diferenciando pelas suas vocações)

    skillmul = 80

     

    -- Mesma coisa de cima, mas relacionado à mana/magic level

    manamul = 80

     

    -- Preço de cada SQM de uma casa

    houseprice = 500

     

    -- Nível necessário para comprar uma casa

    houselevel = 25

     

    -- Proteção para aqueles que estão abaixo deste nível (no caso, nenhum jogador do nível 1 à 15 poderão atacar jogadores, tanto quanto ser atacados pelos mesmos).

    protectionlimit = 15

     

    -- Dano crítico e chance {chance, porcentagem a mais de dano}

    -- Às vezes, seu jogador poderá dar um dano crítico, e a porcentagem será a soma de dano maior que ele dará.

    criticaldamage = {"5", "50"}

     

    ---------------------------------------------------------------------------------------

    -------------------------- Configuração: Skull System -------------------------

    ---------------------------------------------------------------------------------------

     

    -- Tempo para perder uma caveira branca (white skull / 1 = 1 minuto)

    whitetime = 1

     

    -- Tempo para perder uma 'morte injustificada' (1 = 1 minuto)

    fragtime = 1*50

     

    -- Quantas 'mortes injustificadas' o jogador terá que ter feito para ser banido temporariamente? (1 = 1 morte)

    banunjust = 7

     

    -- Quantas 'mortes injustificadas' o jogador terá que ter feito para adquirir uma caveira vermelha? (red skull / 1 = 1 morte)

    redunjust = 5

     

    -- Quanto tempo o jogador ficará banido? (1 = 1 hora)

    bantime = 24*1

     

    --------------------------------------------------------------------------------------

    ------------------------------- Configuração: Acessos de GM --------------------------------

    --------------------------------------------------------------------------------------

     

    -- Acesso necessário para andar nas casas e poder abrir as portas das mesmas.

    accesshouse = 3

     

    -- Acesso necessário para entrar no servidor sem esperar na lista de espera e quando o servidor estiver fechado para jogadores.

    accessenter = 1

     

    -- Acesso necessário para ignorar danos, cansaço (exhaustion), limite de capacidade e ser ignorado pelos monstros.

    accessprotect = 3

     

    -- Acesso necessário para enviar mensagens globais e falar com cores diferentes em canais públicos do servidor.

    accesstalk = 1

     

    -- Acesso necessário para mover itens à distância sem precisar estar próximo a ele.

    accessremote = 3

     

    -- Acesso necessário para ver ID/Posição do item que você está olhando (dando look).

    accesslook = 2

    Servidores 8.4

    --(EM CONSTRUÇÃO) The Forgotten Server Config

     

    -- Account Manager

    accountManager = "yes" --Ativar Account Manager? (yes/no)

    newPlayerChooseVoc = "no" --Escolha de votação ativada? Se no, jogadores começaram como no-vocation

    newPlayerSpawnPosX = 95 --Coordenada inicial X do novo jogador

    newPlayerSpawnPosY = 117 --Coordenada inicial Y do novo jogador

    newPlayerSpawnPosZ = 7 --Coordenada inicial Z do novo jogador

    newPlayerTownId = 1 --"Townid" do novo jogador

    newPlayerLevel = 1 --Nível inicial do novo jogador

    newPlayerMagicLevel = 0 --ML inicial do novo jogador

    generateAccountNumber = "yes" --Se yes, o account manager gerará uma conta aleatória, se no, o jogador escolherá sua conta

     

    -- Banimentos

    broadcastBanishments = "yes" --Anunciar banimentos para todos os jogadores? (yes/no)

    banDays = 7 --Dias de ban

    finalBanDays = 30 --

    killsToBan = 5 --Mortes injustas para o banimento automático

     

    -- Batalhas

    worldType = "pvp" --Tipo de mundo (pvp, no-pvp, pvp-enforced)

    hotkeyAimbotEnabled = "yes" --Sistema de hotkeys ativado? (yes/no)

    protectionLevel = 1 --Nível máximo protegido de PK

    killsToRedSkull = 3 --Número de mortes para virar red skull

    pzLocked = 60000 --Tempo (milissegundos) para o battle sair

    deathLosePercent = 10 --Percentual de experiência perdido ao morrer

    criticalHitChance = 7 --Chance de desferir um golpe crítico em monstros ou outros jogadores

    removeAmmoWhenUsingDistanceWeapon = "yes" --Munições finitas? (yes/no)

    removeChargesFromRunes = "yes" --Runas finitas? (yes/no)

    timeToDecreaseFrags = 24 * 60 * 60 * 1000 --Tempo para diminuir frags (em milissegundos)

    whiteSkullTime = 15 * 60 * 1000 --Tempo para sumir uma White Skull (em milissegundos)

    oldConditionAccuracy = "no" --

    alternativeExhaust = 1000 --

     

    -- Comandos

    displayGamemastersWithOnlineCommand = "no" --Mostrar GMs online com o comando !online (yes/no)

     

    -- Configurações de conexão

    ip = "127.0.0.1" --IP real do servidor

    port = 7171 --Porta do servidor

    loginTries = 10 --Tentativas de login erradas para bloquear o usuário

    retryTimeout = 5 * 1000 --

    loginTimeout = 60 * 1000 --Quanto tempo um jogador pode ficar na lista de escolha de personagens até ela se fechar (em milissegundos)

    maxPlayers = "1000" --Número máximo de jogadores online simultaneamente permitido

    motd = "Welcome to the Forgotten Server!" --Motd do servidor

    onePlayerOnlinePerAccount = "yes" --Vetar que jogadores possam usar a mesma conta com personagens diferentes simultaneamente? (yes/no)

    allowClones = 0 --Quantidade de clones do mesmo personagem permitidos (0 para desativar)

    serverName = "Forgotten" --Nome do servidor

    loginMessage = "Welcome to the Forgotten Server!" --Mensagem de login

    adminLogsEnabled = "no" --Gravar logs administrativos? (yes/no)

    statusTimeout = 5 * 60 * 1000 --

    replaceKickOnLogin = "yes" --Ao logar num personagem que já está online no servidor, kická-lo para o outro entrar? (yes/no)

     

    -- Lista de mortes

    deathListEnabled = "yes" --Salvar mortes dos personagens, para serem mostradas em um site por exemplo (yes/no)

    maxDeathRecords = 5 --Número máximo de mortes salvas (ao alcançar 6 por exemplo, a primeira morte é removida dando espaço a última)

     

    -- Guildas

    ingameGuildSystem = "yes" --Sistema de guildas no jogo ativado? (yes/no)

     

    -- Casas

    housePriceEachSQM = 1000 --Preço de cada sqm de uma casa, em gold

    houseRentPeriod = "never" --Alugel

     

    -- Ócio

    kickIdlePlayerAfterMinutes = 15 --Kickar jogador inativo depois de quantos minutos?

     

    -- Uso de itens

    timeBetweenActions = 200 --Tempo de "exhaust" entre o uso da opção "Us it" (por exemplo, "Use it" para acender tochas) (em milissegundos)

    timeBetweenExActions = 1000 --

     

    -- Mapa

    mapName = "forgotten" --Nome do mapa, pasta world

    mapAuthor = "Komic" --Autor do mapa

    randomizeTiles = "yes" --Aleatorizar pisos? (yes/no)

     

    -- Troca de mensagens

    enableRuleViolationReports = "yes" --Ativar control+z (yes/no)

    maxMessageBuffer = 4 --

     

    -- MySQL

    mysqlHost = "localhost" --Host que está localizado o banco de dados do servidor

    mysqlUser = "root" --Usuário (login) que acessará o banco de dados

    mysqlPass = "" --Senha do usuário

    mysqlDatabase = "theforgottenserver" --Nome do banco de dados

    mysqlPort = 3306 --Porta do servidor MySQL (padrão 3306)

     

    -- Premium Account

    freePremium = "no" --Premium account grátis? (yes/no)

     

    -- PVP Server (configurações para servidores pvp-enforced, mas influenciam em servidores comuns)

    displayOnOrOffAtCharlist = "no" --Mostra se o jogador está online ou offline na lista de personagens

    allowChangeOutfit = "yes" --Troca de outifit permitida? (yes/no)

    noDamageToSameLookfeet = "no" --Proibir atacar jogadores com a mesma aparência? (yes/no)

    experienceByKillingPlayers = "no" --Ganhar experiência ao matar outros jogadores? (yes/no)

     

    -- Rates

    rateExp = 5 --Multiplicador de experiência (Ex.: Se deixar 30, os monstros darão 30 vezes mais experiência que o Tibia global; Rats darão 150exp e Demons darão 180000exp)

    rateSkill = 3 --Multiplicador de skills (Ex.: Se deixar 80, os jogadores irão ter seus skills aumentados 80 vezes mais rápido que no Tibia global, diferenciando pelas suas vocações)

    rateLoot = 2 --Multiplicador de loot dos monstros (Ex.: Se deixar 2, as chances do monstros dropar itens serão 2x maiores do que no Tibia global)

    rateMagic = 3 -- Mesma coisa de cima, mas relacionado à mana/magic level

    rateSpawn = 1 --Aumentando essa opção, irá aumentar a velocidade de "spawn" (nascimento) dos monstros

     

    -- Real Server Save

    -- nota: serverSaveHour significa o horário 03:00, não que irá ser salvo a cada 3 horas,

    -- se você quer o sistema antigo utilize o autoSaveEachMinutes (abaixo). Este método de serversave pode ser instável,

    --nós recomendamos o uso do otadmin se você quer serversaves reais.

    serverSaveEnabled = "no" --Habilitar o sistema "real server save", explicado acima (yes/no)

    serverSaveHour = 3 --Hora que o servidor irá executar o real server save

    shutdownAtServerSave = "yes" --Fechar o servidor após o real server save

    cleanMapAtServerSave = "yes" --Limpar o mapa após o real server save

     

    -- Server saving

    autoSaveEachMinutes = 15 --Server save normal, em minutos

    saveGlobalStorage = "no" --Salvar GlobalStorage ao fechar o servidor? (procure se informar sobre os scripts que você utiliza, para mexer nesta opção) (yes/no)

     

    -- Spawns

    deSpawnRange = 2 --

    deSpawnRadius = 50 --Distância (em SQM) do respawn atual de um monstro em que tal monstro não poderá ultrapassar (assim voltando ao lugar de origem)

     

    -- SqLite

    sqliteDatabase = "forgottenserver.s3db" --Arquivo banco de dados, somente se estiver utilizando sqlite

     

    -- SQL

    sqlType = "sqlite" --Tipo de SQL usado (MySQL, SQLite)

     

    -- Inicialização

    defaultPriority = "high" --Prioridade definida automaticamente após inicio do servidor

     

    -- Status

    ownerName = "" --Seu nome (dono do otserv)

    ownerEmail = "@otland.net" --Seu e-mail

    url = "http://otland.net/" --Site do otserv

    location = "Europe" --Localização do otserv

    Lembrando que 1000 ms (milissegundos) é 1 segundo.

     

    Nota: Se algum item existente no config.lua não estiver exposto aqui, não se preocupe, simplesmente não mexa nele, a menos que você entenda o que ele faz e queira mudar. Aqui foram expostos os principais, os que podem ser alterados se você desejar.

    Vale ressaltar também que, todas as alterações no config.lua devem ser feitas dentro das aspas (""). Se você quiser usar aspas nas alterações, utilize-a em conjunto com uma barra invertida para a esquerda: \"

    location = "Brasil, \"País do futebol\""

    Terceiro passo

    Criando conta de GM

     

    Agora vamos criar a conta do administrador do servidor, do senhor Gamemaster. Esta parte pode parecer mais complexa que o segundo passo, mas depois que você pega o jeito e entende o padrão da linguagem, fica bem fácil.

     

    Antes de tudo, existem dois tipos de otservs, os Servidores SQL (que guardam todas as informações em um banco de dados SQL) e os Servidores XML (que guardam as informações em diversos arquivos XML), e dependendo de qual é seu servidor, a criação da conta de gamemaster será diferente.

     

    Atualmente, os Servidores XML estão sendo abolidos e muito em breve existirá apenas Servidores SQL, essa discussão você pode encontrar nas áreas relacionadas no fórum.

     

    Servidor XML

    A maioria dos servidores xml vêm com uma conta de gamemaster pronta, mas ainda sim você terá que configurar o nome, uma nova conta e senha.

     

    • Abra a pasta do seu servidor, vá até data > players. Ache qualquer arquivo que tenha nome de GM (God, GM...), renomeie-o para o nome que você quiser (ex: God Magus) e abra-o com o bloco de notas (clique com o botão direito no arquivo e selecione "Editar").

    • Em name você insere o nome do arquivo (ex: name="God Magus") e em account você insere a conta que você deseja ser a conta do gamemaster (ex: account="214675"). IMPORTANTE!! Antes de mudar a account, anote a antiga pois você precisará mais adiante. Tenha certeza também que a variável access está com o valor 5 ou maior (ex: access="5"). As outras variáveis não são necessárias alterar.

    Dica: se a visualização do arquivo estiver ruim no bloco de notas, tente deixá-la melhor ativando a "quebra automática de linha" em "Formatar".

    • Agora volte para a pasta matriz, e entre em data > accounts. Procure um arquivo XML que o nome seja a account antiga que estava última arquivo que você acessou (por isso que foi pedido anotar a antiga account), renomeie-o para os números da sua nova account (ex: 214675) e abra-o com o bloco de notas (clique com o botão direito no arquivo e selecione "Editar").

    •Em pass você insere a senha que desejar para sua account (ex: pass="magusehlindao", e em character name você coloca o nome do seu gamemaster (ex: character name="God Magus").

     

    Salve todos os arquivos e está tudo pronto, sua conta de gamemaster está feita.

     

    Servidor SQL

    Temos vários tutoriais na seção de tutoriais ensinando a criar gamemaster em servidor sql, aqui vão alguns:

     

    http://forums.######/showthre...m-Data.-Sqlite

    http://forums.######/showthre...lmente-sql-667

    http://forums.######/showthre...-Em-Server-SQL

     

    Dúvidas? Utilize a seção de suporte ou pergunte no próprio tópico.

     

     

    Quarto e último passo

     

    Após essas configurações, você já pode abrir seu servidor para testá-lo (Visualize o F.A.Q abaixo caso não saiba entrar no servidor). Porém, você ainda pode fazer várias alterações nele, como criar novos monstros, magias, runas, e até NPCs!

    Para isso, tudo o que você tem de fazer é acessar as outras seções de nosso fórum e procurar tutoriais explicativos para os assuntos.

     

    Clique aqui para acessar a área de tutoriais!

     

    Nota: Em caso de falta de DLL na execução do servidor, visite o site DLL-Files (Download your missing dll-files - DLL-files.com) e utilize a caixa de busca para encontrá-las e baixá-las. Depois, descompacte elas no diretório aonde está localizado o executável (otserv.exe).

     

     

    F.A.Q

     

    Como abrir meu servidor?

    Após configurar corretamente o config.lua, dê um duplo clique no executável (OTServ.exe ou TheForgottenServer.exe; pode variar) e aguarde a abertura do servidor. Se no processo aparecer qualquer mensagem de erro, tire uma screenshot do erro e poste na seção de dúvidas, para obter ajuda. Se o servidor abrir sem erros, você já está pronto para testá-lo!

     

     

    Como entrar no meu servidor?

    Para entrar no seu servidor, você precisará do cliente de Tibia correlativo ao protocolo do seu OTServ (por ex, se baixou um servidor 8.4 precisará exatamente do Tibia 8.4). Todas as versões do Tibia estão disponíveis aqui.

    Você também precisará de uma ferramenta comumente conhecida como "IP Changer", que tem a função de trocar o IP/Porta do cliente do Tibia para um em específico. Para baixá-lo clique aqui.

     

    Baixados os programas necessários, execute os dois e coloque o IP/Porta do seu servidor no "IP Changer", e "troque o IP". Fazendo isso, você já pode acessar o seu servidor colocando o Account Name/Password na tela do Tibia.

     

     

    Como saber meu IP?

    Há várias maneiras para descobrir seu IP, vamos tentar duas delas.

    Vá até o menu Iniciar > Configurações > Painel de controle e clique no item Conexões de rede. Dê um duplo clique na conexão local (a conexão ativa) e vá até a aba Suporte. Seu endereço de IP estará lá.

    Outra maneira, ligeiramente mais fácil, é visitar o site WhatIsMyIp, copiar o IP e colar ele no arquivo de configuração do servidor.

     

    Clique aqui para visitar o site WhatIsMyIp!

     

     

    O que é "Account Manager"?

    Account Manager é, em poucas palavras, um NPC que cria uma conta para você. Hoje em dia, é mais utilizado do que websites, devido a sua praticidade e também por exilar o uso de webservers para rodar os sites, tais que acarretam mais uso da memória do computador.

    Praticamente todos os servidor atuais possuem um Account Manager imbutido e, também, uma opção para desabilitá-lo se você quiser. Fica a seu critério decidir se vai usá-lo ou não.

     

     

    Não conseguem conectar?

    Se os jogadores não estiverem conseguindo entrar no seu servidor, provavelmente é porque a porta inserida na variável "port" (padrão 7171) está bloqueada para acesso remoto.

    Para desbloquea-la é simples.

    Vá até o menu Iniciar > Configurações > Painel de controle e clique no item Firewall do windows.

    Se você achar conveniente, desative-o por completo, e peça para seus amigos tentarem acessar novamente o servidor, porém, se quiser deixar seu computador com a proteção do programa, faça o seguinte:

    Vá até a aba Exceções, e clique no botão Adicionar Porta.

    No campo Nome digite Tibia (ou qualquer outro) e no campo Porta, 7171 (porta inserida no config.lua). Após isso nenhuma alteração é necessária, clique em Ok.

    Recomendo também desativar qualquer anti-vírus ou firewall opcional, caso estejam previnindo acessos à porta. Tente novamente e veja os resultados.

     

    Se você utiliza router, recomendo que visite nossa área "Tutoriais para Internet Compartilhada", clicando aqui.

     

     

    Problemas com scripts?

    Caso o seu servidor apresente qualquer tipo de "LUA error", é porque você adicionou/modificou algo que não é suportado pela linguagem LUA, ou mal uso do mesmo.

    Para resolver o problema é simples: basta visualizar qual é a linha que está ocorrendo tais erros, e verificar se o script segue o padrão da linguagem.

    Se você não tiver sucesso tentando consertar o script, visite nossa seção de suporte e peça a ajuda que necessitar, claro, seguindo as regras do fórum.

     

    Clique aqui para ir até a seção de suporte!

     

     

    Problemas com websites?

    Geralmente todo tipo de erro relacionado com linguagens se baseia no ato de acessar a linha que o aplicativo indica, e verificar se está correto.

    Na linguagem PHP, que é utilizada para a criação de websites de OTServ, não é diferente.

    Normalmente, os websites vêm com um arquivo específico que possui todas as variáveis globais (config.php), que é aonde você deve configurar.

    Para que os outros possam acessar seu website, você deve possuir um webserver instalado em sua máquina.

    Bom e isto.

    Te Ajudei? da REP+

  10. Olá, como dito no título vou estar postando a script que um npc fará isso: troca a quantidade editavel de itens por 1 item de ID diferente.

     

     

    Vá em Data/NPC/Scripts

    depois copie e cole qualquer arquivo lua nesta pasta.

    depois ponha o nome de "trocaitems" (tudo junto e sem os aspas)

    depois entre neste arquivo lua.

    e ponha isto:

    local keywordHandler = KeywordHandler:new()

    local npcHandler = NpcHandler:new(keywordHandler)

    NpcSystem.parseParameters(npcHandler)

    local talkState = {}

     

    function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

    function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

    function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

    function onThink() npcHandler:onThink() end

     

    function playerHaveItems(cid, itemid)

    local items = type(itemid) == "table" and itemid or {itemid}

    for i = 1, #items do

    if getPlayerItemCount(cid, items) <= 0 then

    return false

    end

    end

    return true

    end

     

    function doPlayerRemoveItems(cid, itemid, count)

    local items = type(itemid) == "table" and itemid or {itemid}

    for i = 1, #items do

    doPlayerRemoveItem(cid, items, count ~= nil and count or 1)

    end

    return nil

    end

     

    function creatureSayCallback(cid, type, msg)

     

    if(not npcHandler:isFocused(cid)) then

    return false

    end

     

    if msgcontains(msg, "trocar") then

    if playerHaveItems(cid, {5896, 6569, 2674, 5894, 5888, 5881, 5901}) then

    doPlayerRemoveItems(cid, {5896, 6569, 2674, 5894, 5888, 5881, 5901}, 700)

    doPlayerAddItem(cid, 2521, 1)

    else

    selfSay("Voce precisa de 700 Future orb, 700 water pendant, 700 Stone orb, 700 Essenses of fire, 700 Feathers, 700 bottles of poison e 700 Ice Orb, Para Conseguir Uma Master Ball.")

    end

    end

    return true

     

    endnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

    npcHandler:addModule(FocusModule:new())

    -Azul: quantidade

    -Vermelho: Id dos itens

    -Verde: ID que o Npc irá te dar

    -Amarelo: Mensagem se não tiver os itens

    -Rosa: Mensagem para trocar os itens

    Agora vá em Data/Npc

    e copie e cole qualquer arquivo xml

    e depois ponha o nome no arquivo xml (o nome que vai ser do npc)

    depois entre neste arquivo xml.

    ponha isto:

    <?xml version="1.0" encoding="UTF-8"?>

    <npc name="Nomedonpc" script="trocaitems.lua" walkinterval="2000" floorchange="0">

    <health now="100" max="100"/>

    <look type="169" head="114" body="86" legs="114" feet="0" addons="2"/>

    <parameters>

    <parameter key="message_greet" value="Ola, diga {trocar} para trocar 7 items por 1."/>

    </parameters>

    </npc>

    e onde esta "npc name=nomedonpc"vc poe o nome do npc.

     

    bom e isto gente

    creditos:eu

    Te Ajudei? da REP+

  11. Bom gente.e fiz um tutorial perfeito em outro forum:

    http://www.webcheats.com.br/forum/tutoriais-otserv/397457-mega-curso-de-sprites.html

    o meu nome neste forum e... BrenoMadlan e eu tenho uma conta mais usada meu nome nela e:~Luquinhas

    caso este forum deixe vou deixar o tuto aqui so no link mais caso os moderadores nao deixem podem tirar...

    eu nao consegui passar as fotos aqui por isto que nao passei o tutorial aqui.

    mais caso eu tenha ajudado alguem.

    Te Ajudei? da REP+

  12. [Tutorial]Como criar um OT de Tibia com router e sem router

     

     

     

     

    Obviamente que ha varios tutoriais espalhados na internet sobre como criar um OT de Tibia,porem esse tutorial é diferente,eu explixarei tudo que sei sobre OT aqui de uma forma simplificada e descomplicada.Então vamos la:

     

     

    1º Passo(Liberar as portas no firewall do windows)

    Va em iniciar> painel de controle> firewall do windows> aba excessões

    Coloque adicionar portas,no nome você escolhe o de sua preferencia,e o numero da porta você coloca 7171,marque a opção tcp e ok.Repita o passo mais uma vez so modificando de tcp pra udp e ok.

    Bem,para os não tem router esse passo encerrou,mas para os que tem router ainda não.Não se desespere pois isso é simples basta seguir esse tutorial:

    http://www.tecmundo.com.br/3990-aprenda-a-liberar-portas-em-um-roteador-facilmente.htm

    (so copiar e colar o link)

    Logicamente a porta que você tera que abrir em seu roteador sera também a 7171 tcp e udp

     

     

    2º Passo(Baixando um OT server)

    Bem,aqui no web cheats mesmo é possivel encontrar um ot serv para download.Se não encontrar nenhum que lhe agrade também pode ir pesquisando pelo google,pois há varios sites no qual se encontram ots para download

     

     

    3º Passo(Entendendo o OT)

    Isso é um etapa fundamental.Eu baixei o ot,e agora,o que sao aqueles montes de arquivos?Na pasta raiz do ot sempre ha um executavel.Aquele executavel e para você abrir o seu ot,mas antes há uma coisa importante ha fazer,configura-lo.No arquivo config.lua está presente todas as configurações do ot como XP,seu ip para as outras pessoas se conectarem e etc.Mas com que se abre o config.lua?Ele é aberto com o bloco de notas.Logicamente não vou ficar explicando função por função do config.lua pois qualquer pessoa consegue entender os codigos.Há mais um arquivo que se deve ter uma atenção especial na pasta raiz,mas vo deixar para explicar depois.

     

     

    4º Passo(Criando um ip Fixo)[Essa parte é importante para as pessoas que possuem router

    Todo ot que é ot tem que ter um ip fixo,porem a criação do ip fixo é diferente para os que não tem router e para os que tem.Para os que tem router,é muito dificil ver um tutorial que explique um outro geito de deixar o ot online a não ser pelo hamachi.Mas como o hamachi é um impecilio!!!eu vou mostrar outro geito de deixar o ot on com router

     

    -Sem router:

    Sem router não ha complicação alguma na criação do ot.Para criar o ip fixo va no site no-ip e crie sua conta,registre um dominio de servidor(o seu ip fixo) la e baixe o aplicativo no-ip.

     

    -Com router:

    Esse é o martilho de quem tem roteador,toda vez que tenta por o ot online,não da certo,mesmo liberando as portas do roteador,porem há um programa chamado dyndns que libera o ot,eu que tenho roteador esse programa esta aprovado,eu não conseguia fazer o ot ficar online de jeito nenhum,com esse programa,ele ficou online perfeitamente.Acesse o site dyndns,crie sua conta,registre um dominio de servidor(o seu ip fixo) e baixe o aplicativo dyndns

     

     

    5º Passo(Colocando o servidor a primeira vez para funcionar)

    Primeiramente você ira configurar seu ot direitinho(nao esqueça de colocar no config.lua,o seu ip fixo)depois ira abrir o programa que você baixou (o no-ip ou o dyndns),vai ativar o ip,depois ira abrir o ot.(muita gente comete o erro de não ver a versão do ot que baixou,então verifique tambem para ter a versão correta do tibia no seu pc,e tenha tambem o multi-ip,para acessar seu ot).Depois os que não possuem router irão colocar no multi-ip changer o seu ip fixo criado,os que possuem router e melhor colocar o endereço ip do seu router,que tambem é fixo,mas não da acesso aos players de fora,mas tambem veja se o ip fixo criado esta deixando os players entrarem no ot(obviamente)

     

     

    6º Passo(Criando acc de god,cm,gm ou de players personalizados)

    Antes de publicar seu ot nos sites,obviamente você tera que ter uma ferramenta que possa administrar as accs no seu ot.Essa ferramenta se chama sqlite studio,que pode ser baixado no site da sqlite

    Eu não vou explicar como se usa,por que não e tão dificil,tem ate umas video aula insinando isso no youtube,não e nada de um bixo de sete cabeças não.Se não acharem no youtube deem uma olhada no google que concerteza vocês acham.

     

     

    7ºPasso(Aprendendo comandos de god,gm e cm)

    Bem,o que adianta ter uma conta de god se agora não sei os comandos?

    Pois é,agora você sabe;ta ai:

    Comandos De GOD:

     

    /a Numero De Sqm's Que Você Quer Pular (Pula x Sqm's O Max é 50)

     

    /i Id Do Item (Cria O Item Pelo ID)

     

    /n Nome Do Item (Cria o Item Pelo Nome Nao Pelo ID) (Com espaço No final Exp: /n Golden Helmet )

     

    /goto Nome Do Monstro/Npc Ou Player (Vai Ate o Monstro/Npc Ou Player Desejado)

     

    /c Nome Do Player (Puxa O Player Ate Você)

     

    /ghost (Deixa Você Totalmente Invisivel)

     

    /owner Nome DO Player (Da A Casa Para o Jogador Você Tenque Falar Isso Dentro Da Casa)

     

    /kick Nome (Kicka o Player)

     

    /up (Sobe Um Andar Ou Mais)

     

    /down (Desce Um Andar Ou Mais)

     

    /save (Da O Server Save)

     

    /clean (Da Clean No Mapa Retira Os Corpos E Itens Do Chão)

     

    /m Nome Do Monstro (Faz Um MOnstro Que De Exp E Loot)

     

    /summon (Faz Um MOnstro Que Nao De Exp Nem Loot + Segue Você)

     

    /t (Vai Para O Templo)

     

    /ban Nome Do Player (Bane o Char Escolhido)

     

     

     

    /bc (Cor Da Mensagem Exp: Red) (Mensagem) - Transmite Para Os Jogadores a Mensagem Na Cor Escolhida

     

    /z Nome Da Magia (Checa Os Efeitos Da Magia Em Você Mesmo)

     

    /q Mostra Quanto De Dinheiro Você Tem.

     

    /B Mensagem (Manda Mensagem Pro Server Todo)

     

    Bem esses são a maioria dos comandos que tem,depende muito do ot tambem,tem uns que funciona em um ot,outros não.Esse do ban ai nos ots novos e so vc clicar com o botao direito no personagem e colocar report,ou sei la oq,esqueci mas é uma coisa assim.

     

     

    8º Passo(Corrigindo e arrumando erros do mapa)

    Um editor de mapa de tibia e bem util para isso como o remeres map editor(o mais recomendavel).Tem outros tambem mas eu recomendo o remeres pois os outros geralmente bugam o mapa.Qualquer duvida é so pesquisar algum tutorial que explique como ultilizar.

     

    9º Passo(Registrando o ot nos sites)

    Agora é hora de registrar o seu ot nos sites para os outros jogadores se conectarem.É só criar uma conta nesses sites e registrar o ot conforme esta pedindo.Atnção,o ot tem que estar online.

     

    10º Passo(Manutenção)

    Esse é um passo fundamental para um ot,a sua manutenção.Depois de um tempo é bom fazer atualizações no mapa e talz para atrair players.Tambem um bom negocio para servidores de xp alta é editar bixos,isso e facil,e so caçar dentro da pasta do seu ot aquela pasta que contem os montros,ai é só editar com o bloco de notas.

    -----------------------------------------------------------------------------------------------------------------------------

    Qualquer Duvida pessoal pode perguntar que eu respondo.E caso quiserem que eu seja GM,CM ou GOD de algum servidor e só mandar uma mensagem nesse email:fabioaurelio2000@hotmail.com porque eu sei muito mais coisa do que postei aqui,sei até fazer edição em HTML caso queira fazer um site também,e estou livre no momento tambem,ja tenho tambem bastante experiencia com ots.Então é isso ai pessoal,espero que gostem,acho que ficou bem explicado.

     

    Bom e Isto gente.

    Te Ajudei? da REP+

    Creditos:Gareme(eu)

  13. Parte 1: Sprites

     

    1º Passo:

     

    Faça o download de um dat editor ( Download's no Final do Topico )

     

    1- clicar em open

    Quando se clica em open aparece uma nova janela.

    2- selecionar selecionar os arquivos

    Na nova janela terá "dat" e "spr" clique nesses botões e selecione o tibia.spr e tibia.dat do seu cliente.

    3- abrir

    Depois de ter selecionado o spr e o dat clique em open e o seu tibia spr (Imagens) e o seu dat (configurações) irão aparecer..

     

    2º passo:

     

    1- importar

    Clique em import/sprites e abra a pasta onde tem suas sprites...

    2- sua sprite

    Encontre sua sprite na barrinha do lado onde tem os sprites.

     

    3º passo:

     

    1- criar novo monstro

    Clique em File/New/Monster e aparecerá na barrinha do lado esquerdo abaixo da tela ( |_ )aparecerá um novo "monster" mas, está em branco.

    2- achar sprite e adicionar

    Ao aparecer o novo monstro em branco ache suas sprites, que estarão no fim, e aperte "insert" na primeira..

    3- aparecerá

    Sua sprite aparecerá ao envez do local em branco.

    4- ajustando

    Aqui é que entra a parte do arquivo data (dat). Em Width coloque a largura em sqm do seu pokemon ou monster de tibia e já em Height coloque a altura em sqm..Cropsize e Blendframes deixe como está.. X div coloque 4 (norte,sul,leste e oeste), Y e Z div não mecha.. e em Animation coloque quantas animações tem no pokemon/monster EX.: 3=1- pisar com o pé esquerdo,2- parado,3-pé direito. e em ITEM STATUS tem por exemplo: Se ele transmite luz que é a única coisa que um pokemon/monster pode ter nessa área.

     

    4º passo:

     

    1- clique para salvar

    Clique no disquete localizado acima esquerda da tela ( |\ ).

    2- salvar o dat e o spr

    Selecione o Dat e o Spr do seu cliente novamente para salvar (aconselho copiar o do cliente e colar em outra pasta para beckap).

    3- salvar

    Quando você clica em "Complie" é como se estivesse "Salvando" mais é isso mesmo....

     

    Gente até aqui utilizamos o dat editor com imagens... a partir de agora é com XML só de poketibia e com spoiler, ou seja, sem foto.

    Observações:

    Obs1: Todos os sprites devem ser em 32x32 píxels...

    Obs2: Para pokemon/monsters de 4 sqm, Width:2, Height:2, precisam de 4 sprites de 32x32 para cada parte...

    Obs3: A Animation pode ter quantas forem necessárias.. 1=não tem animção, 2, 3, 4, 5, etc...

    Obs4: Eu estou disponibilizando um site com sprites de pokemon só para recortar:

    Parte 1: Sprites

     

    1º Passo:

     

    Faça o download de um dat editor ( Download's no Final do Topico )

     

    1- clicar em open

    Quando se clica em open aparece uma nova janela.

    2- selecionar selecionar os arquivos

    Na nova janela terá "dat" e "spr" clique nesses botões e selecione o tibia.spr e tibia.dat do seu cliente.

    3- abrir

    Depois de ter selecionado o spr e o dat clique em open e o seu tibia spr (Imagens) e o seu dat (configurações) irão aparecer..

     

    2º passo:

     

    1- importar

    Clique em import/sprites e abra a pasta onde tem suas sprites...

    2- sua sprite

    Encontre sua sprite na barrinha do lado onde tem os sprites.

     

    3º passo:

     

    1- criar novo monstro

    Clique em File/New/Monster e aparecerá na barrinha do lado esquerdo abaixo da tela ( |_ )aparecerá um novo "monster" mas, está em branco.

    2- achar sprite e adicionar

    Ao aparecer o novo monstro em branco ache suas sprites, que estarão no fim, e aperte "insert" na primeira..

    3- aparecerá

    Sua sprite aparecerá ao envez do local em branco.

    4- ajustando

    Aqui é que entra a parte do arquivo data (dat). Em Width coloque a largura em sqm do seu pokemon ou monster de tibia e já em Height coloque a altura em sqm..Cropsize e Blendframes deixe como está.. X div coloque 4 (norte,sul,leste e oeste), Y e Z div não mecha.. e em Animation coloque quantas animações tem no pokemon/monster EX.: 3=1- pisar com o pé esquerdo,2- parado,3-pé direito. e em ITEM STATUS tem por exemplo: Se ele transmite luz que é a única coisa que um pokemon/monster pode ter nessa área.

     

    4º passo:

     

    1- clique para salvar

    Clique no disquete localizado acima esquerda da tela ( |\ ).

    2- salvar o dat e o spr

    Selecione o Dat e o Spr do seu cliente novamente para salvar (aconselho copiar o do cliente e colar em outra pasta para beckap).

    3- salvar

    Quando você clica em "Complie" é como se estivesse "Salvando" mais é isso mesmo....

     

    Gente até aqui utilizamos o dat editor com imagens... a partir de agora é com XML só de poketibia e com spoiler, ou seja, sem foto.

    Observações:

    Obs1: Todos os sprites devem ser em 32x32 píxels...

    Obs2: Para pokemon/monsters de 4 sqm, Width:2, Height:2, precisam de 4 sprites de 32x32 para cada parte...

    Obs3: A Animation pode ter quantas forem necessárias.. 1=não tem animção, 2, 3, 4, 5, etc...

    Obs4: Eu estou disponibilizando um site com sprites de pokemon só para recortar:

    http://www.spriters-resource.com/ds/pkmndungeon2/index.html

    (so copiar e colar o link)

    Parte 2: XML

     

    1º passo:

     

    Abra a pasta Data/Monsters/Pokes copie e cole um pokemon qualquer e mude o nome por fora.

    <?xml version="1.0" encoding="UTF-8"?>

    <monster name="Abra" nameDescription="a Abra" race="undead" experience="300" speed="250" manacost="450">

    <health now="750" max="750"/>

    <look type="262" head="113" body="57" legs="95" feet="113" corpse="3000"/>

    <targetchange interval="1000" chance="1000"/>

    <strategy attack="100" defense="0"/>

    <flags>

    <flag summonable="1"/>

    <flag attackable="1"/>

    <flag hostile="1"/>

    <flag illusionable="1"/>

    <flag convinceable="1"/>

    <flag pushable="0"/>

    <flag canpushitems="1"/>

    <flag canpushcreatures="0"/>

    <flag targetdistance="1"/>

    <flag staticattack="90"/>

    <flag runonhealth="10"/>

    </flags>

    <attacks>

    <attack name="tackle" interval="1000" chance="50" min="-10" max="-30">

    </attack>

    <attack name="confusion" interval="5000" chance="90" min="-50" max="-90">

    </attack>

    <attack name="scratch" interval="3000" chance="90" min="-20" max="-40">

    </attack>

    <attack name="teleport" interval="7000" chance="90" min="-0" max="-0">

    </attack>

    <attack name="psychic" interval="6500" chance="90" min="-100" max="-150">

    </attack>

    </attacks>

    <defenses armor="1" defense="1">

    </defenses>

    <immunities>

    </immunities>

    <voices interval="5000" chance="10">

    <voice sentence="ABRA!"/>

    <voice sentence="Abraaa!"/>

    </voices>

    <loot>

    <item id="5896" countmax="1" chance="15000"/><!-- Sell Item -->

    <item id="5888" countmax="0" chance="1"/><!-- Sell Item -->

    <item id="5888" countmax="0" chance="1"/><!-- Sell Item -->

    <item id="5903" chance="100"/><!-- Stone -->

    </loot>

    </monster>

    monster name: nome do monstro.

    nameDescription: como fica o nome quando da look no poke.

    race: Sempre será undead.. Não mude.

    experience: experiência que o pokemon dá ao derrotá-lo.

    speed: velocidade do monstro.

     

    health now: vida atual (ao ver ele em local de spawn).

    max: vida real dele, quando estiver totalmente curado.

     

    look type: quando vc estiver no dat editor ainda, lá tem itemtype em Extras nas barrinhas de baixo.. coloque o itemtype que está lá, aqui.

     

    attacks: os attacks que ele irá utilizar se for selvagem... se não for, não coloque nada e sim apague.

    defenses: Que tipo de defesa ele utiliza por exemplo: a cada 4000 interval ele se cura.

     

    voices: as vozes que ele fala (aquelas em laranja).

    loot: o item que cai do poke em id.

     

    Legal, daí vc abre Data/Monsters/Monsters.xml e lá fassa a mesma coisa, copie qualquer uma linha e cole ali mesmo:

    <monster name="pidgey" file="pokes/pidgey.xml"/>

    monster name: nome do monstro.

     

    file="pokes/.xml": onde estaria escrito "pidgey" coloque o nome do arquivo XML que vc colocou no seu poke. EX.: Se eu criei um agron, e coloquei o nome do xml de agron, teria que colocar: file="pokes/agron.xml"

    bom aagora vou passar o download do sprite editor e o scan:

    Download

    Scan

    Te ajudei? da REP+

  14. Olá pessoal da WC.

    explicando...

     

    Alguns servidores 8.70~9.1 ja tem os scripts, mas caso não tiver aqui estarei explicando como fazer tudinho.

     

    Primeiro, Mount Uteis para 9.10.

    pastadoot/DATA/XML copie um arquivo e renomeie para mounts

    <?xml version="1.0" encoding="UTF-8"?>

    <mounts>

    <mount id="1" clientid="368" name="Widow Queen" speed="20" />

    <mount id="2" clientid="369" name="Racing Bird" speed="20" />

    <mount id="3" clientid="370" name="War Bear" speed="20" />

    <mount id="4" clientid="371" name="Black Sheep" speed="20" />

    <mount id="5" clientid="372" name="Midnight Panther" speed="20" />

    <mount id="6" clientid="373" name="Draptor" speed="20" />

    <mount id="7" clientid="374" name="Titanica" speed="20" />

    <mount id="8" clientid="375" name="Tin Lizzard" speed="20" />

    <mount id="9" clientid="376" name="Blazebringer" speed="20" />

    <mount id="10" clientid="377" name="Rapid Boar" speed="20" />

    <mount id="11" clientid="378" name="Stampor" speed="20" />

    <mount id="12" clientid="379" name="Undead Cavebear" speed="20" />

    <mount id="13" clientid="387" name="Mule" speed="20" />

    <mount id="14" clientid="388" name="Tiger Slug" speed="20" />

    <mount id="15" clientid="389" name="Uniwheel" speed="20" />

    <mount id="16" clientid="390" name="Crystal Wolf" speed="20" />

    <mount id="17" clientid="392" name="Brown War Horse" speed="20" />

    <mount id="18" clientid="401" name="Kingly Deer" speed="20" />

    <mount id="19" clientid="402" name="Tamed Panda" speed="20" />

    <mount id="20" clientid="405" name="Dromedary" speed="20" />

    <mount id="21" clientid="406" name="Sandstone Scorpion" speed="20" />

    <mount id="22" clientid="421" name="Rented Horse" speed="20" />

    <mount id="23" clientid="426" name="Fire War Horse" speed="20" />

    </mounts>

    Antenção! esses mounts são para versão 9.10.

    se quiser os da versão 8.70 ai vai:

    <?xml version="1.0" encoding="UTF-8"?>

     

    <mounts>

    <mount id="1" clientId="368" name="Widow Queen" speed="20" premium="yes" />

    <mount id="2" clientId="369" name="Racing Bird" speed="40" premium="yes" />

    <mount id="3" clientId="370" name="War Bear" speed="20" premium="yes" />

    <mount id="4" clientId="371" name="Black Sheep" speed="20" premium="yes" />

    <mount id="5" clientId="372" name="Midnight Panther" speed="30" premium="yes" />

    <mount id="6" clientId="373" name="Draptor" speed="40" premium="yes" />

    <mount id="7" clientId="374" name="Titanica" speed="30" premium="yes" />

    <mount id="8" clientId="375" name="Tin Lizzard" speed="30" premium="yes" />

    <mount id="9" clientId="376" name="Blazebringer" speed="40" premium="yes" />

    <mount id="10" clientId="377" name="Rapid Boar" speed="40" premium="yes" />

    <mount id="11" clientId="378" name="Stampor" speed="40" premium="yes" />

    <mount id="12" clientId="379" name="Undead Cavebear" speed="40" premium="yes" />

     

    </mounts>

    Ta, agora ta pronto, mas quando o player logar, ele não vai receber o mount, então vá em pastadoot/DATA/CREATURESCRIPTS/SCRIPTS copie um arquivo e renomeie para mountOnLogin

    ]function onLogin(cid)

    if(isPlayer(cid)) then

    local storageId = 30010

    if getPlayerStorageValue(cid, storageId) == -1 then

    doPlayerAddMount(cid, 1)

    doPlayerAddMount(cid, 2)

    doPlayerAddMount(cid, 3)

    doPlayerAddMount(cid, 4)

    doPlayerAddMount(cid, 5)

    doPlayerAddMount(cid, 6)

    doPlayerAddMount(cid, 7)

    doPlayerAddMount(cid, 8)

    doPlayerAddMount(cid, 9)

    doPlayerAddMount(cid, 10)

    doPlayerAddMount(cid, 11)

    doPlayerAddMount(cid, 12)

    doPlayerAddMount(cid, 13)

    doPlayerAddMount(cid, 14)

    doPlayerAddMount(cid, 15)

    doPlayerAddMount(cid, 16)

    doPlayerAddMount(cid, 17)

    doPlayerAddMount(cid, 18)

    doPlayerAddMount(cid, 19)

    doPlayerAddMount(cid, 20)

    doPlayerAddMount(cid, 21)

    doPlayerAddMount(cid, 22)

    doPlayerAddMount(cid, 23)

    setPlayerStorageValue(cid, storageId, 1)

    end

    end

    return TRUE

    end

    login" name="LoginMount" script="mountOnLogin.lua"/>

    Atenção! esse ai é para 9.10, para 8.70 ai vai:

     

     

     

     

    function onLogin(cid)

    if(isPlayer(cid)) then

    local storageId = 30010

    if getPlayerStorageValue(cid, storageId) == -1 then

    doPlayerAddMount(cid, 1)

    doPlayerAddMount(cid, 2)

    doPlayerAddMount(cid, 3)

    doPlayerAddMount(cid, 4)

    doPlayerAddMount(cid, 5)

    doPlayerAddMount(cid, 6)

    doPlayerAddMount(cid, 7)

    doPlayerAddMount(cid, 8)

    doPlayerAddMount(cid, 9)

    doPlayerAddMount(cid, 10)

    doPlayerAddMount(cid, 11)

    doPlayerAddMount(cid, 12)

    setPlayerStorageValue(cid, storageId, 1)

    end

    end

    return TRUE

    end

    Bom e isto gente.

    Te Ajudei? da REP+.

  15. Boa galera...

    Como o clone items é realizado devido um player salvar e o outro não, decidi ir em busca de um script que resolva esse problema.

     

    Vamos nois.

     

    Vai em otserv/data/globalevents/scripts:

     

    Copia um arquivo .lua e renomeia ele pra saveplayer.lua

    Adicione nele este coder:

    function onThink(cid, interval)

    for _, cid in ipairs(getPlayersOnline()) do

    doPlayerSave(cid, true)

    return true

    end

    end

    Agora vai até globalevents.xml adiciona essa tag:

    <globalevent name="saveplayer" interval="30" event="script" value="saveplayer.lua"/>

    Explicando... Com esse sistema o player que estiver online estará sendo salvo de 30 em 30 segundos, com isso ficará impossivél de ocorrer clone items.

     

    Isso também é bom para prolongar o seu serversave, e te livra das grandes travadas no seu servidor de hora em hora.

  16. Dicas essenciais em Lua

     

     

     

     

    Muita gente andou me pedindo para que eu desse algumas dicas com Lua. Então, resolvi por meio dessa aula, dar dicas gerais de toda a linguagem.

     

    Esse tutorial tem como objetivo apenas salientar alguns macetes e dicas legais para Lua tendo em vista que exista um mínimo conhecimento do assunto. Não responderei perguntas que julgo idiotas, portanto, nem tentem poluir esse tópico, se não sabe o que é Lua, procure no Google que é o melhor que você pode fazer. Desde já, desculpo me por minha antipatia por parte dos ignorantes.

     

    Comentários

    Além dos conhecidos comentários de linhas únicas iniciados por "-- comments go here" existem comentários de bloco, isto é, de multi linhas, representados por "--[[ comments go here]]".

     

    Variáveis

    •Variáveis como o próprio nome já diz não são constantes, ou seja, o programador pode livremente mudar seus valores

    •Variáveis naturalmente são globais, mas podem se tornar locais colocando se antes do início da declaração "local"

    •O escopo de uma variável é limitada para o escopo atual e seus escopos-filhos

    •Não é recomendado debugar códigos usando variáveis locais pois estas são guardadas no stack e por isso é necessário funções como "assert" e outras

    •Uma variável local com mesmo nome de uma variável global apenas substitui o valor da global temporariamente (geralmente no tempo de sua execução, o que não chega a ser problema na maioria dos casos)

     

    Tipos

     

     

    Nil

    Um valor especial que tem valor vazio e significa nulo (NULL)

     

    •Variáveis que são declaradas sem valor possuem valor igual a "nil" e podem ser modificadas livremente

    •Na maioria dos casos "nil" é retornado quando uma função falha

    •É possível usar uma alternativa ao "nil" usando "or" já que "nil" leva ao booleano "false": print(tonumber("a"), tonumber("a") or 1) -> prints "nil 1"

    Boolean

    Pode ter dois valores, true ou false. "Nil" funciona como false mas o número 0 funciona como true. Isso é bastante confundido por muitos

    Number

    Todos os números em Lua são valores "double float"

     

    •Variáveis podem ser convertidas em números pela função tonumber(var) que retorna "nil" caso falhe

    •Funções de manipulação de números são encontradas na biblioteca de matemática do Lua (math)

    Strings

    Strings podem receber os mesmos escapes da linguagem C (\n, \t, \0, etc)

     

    •Strings são internamente encriptadas pelo Lua, isso quer dizer que existe apenas uma única cópia de uma string em particular não importa quantas variáveis referem a essa string

    •Declarações que contam espaços em branco ou mesmo indicações de pular de linha e uso de tabulação podem ser pegos de forma mais dinâmica usando: string = [[Aqui eu escrevo sem me preocupar com nada e nem mesmo aspas, veja só: ' ""'"''" "]]

    •Strings podem ser concadenadas usando o operador ".."

    •Se existem muitas strings para serem concadenadas, o melhor jeito é inserir estas em uma tabela (usando table.insert()) e concadená-las (usando table.concat())

    •Variáveis podem ser convertidas em strings usando tostring(var) que retorna "nil" caso falhe

     

    Tables

    Tabelas podem ser indexadas por números, variáveis, funções, outras tabelas, funções, entre outros

     

    •Atribuindo um valor a um campo da tabela que não existe automaticamente cria esse campo

    •Ao invés de se usar a função table.getn(table) é possível pegar o número de elementos de uma tabela usando #table onde table é o nume da tabela

    •Não confunda table.getn(table) com table.maxn(table). Enquanto a primeira função retorna o número de elementos contido na tabela, o segundo retorna o maior valor numérico contido na tabela e retorna "nil" caso seja uma tabela formada por strings apenas

    •Ao contrário de outras linguagens, o número correspondente ao primeiro valor não é 0 e sim o valor 1

    •É possível remover valores e elementos de uma função atribuindo-lhes o valor "nil"

    •A tabela global se chama "_G" e você pode vê-la assim como as demais tabelas usando (k = key, v = value): for k, v in pairs(_G) do print(k, v) end

     

    Userdatas

    Userdatas são ponteiros do C/C++ que indicam objetos que não podem ser utilizados em Lua

    •Uma "metatable" pode ser um "userdata" para funcionar como uma tabela ou ser chamada como função, operadores próprios, entre outros

    Functions

    Uma função pode retornar múltiplos valores e podem ser atribuídas a várias variáveis

    •Funções podem ser colocadas em tabelas

    •Valores passados por funções são locais a não ser que sejam tabelas ou userdatas. Isso dá a oportunidade de modificar tabelas dentro de funções

    •Funções auxiliares (ou temporárias) podem ser criadas dentro de funções como locais

     

    Switch

     

    Muita gente me pergunta se existe uma função "switch" para case statements em Lua, a resposta é não. Mas, o uso de tabelas em funções podem simular esse efeito, veja:

     

    switch = {}

    switch[1] = function() print("Olá a todos") end

    switch[2] = function() print("Meu nome é Yuji") end

    -- ...

    if (switch[1]) then

    switch[1]() -- executa a função que diz "Olá a todos"

    end

    Loops

     

    •No loop "repeat .. until (bool)" não existe o "continue" pois o Lua automaticamente cuida disso. Apesar disso, existe o "break".

    •No loop "for ... do" existe um atribuito após o último valor para poder incrementar a variável assim como no PHP e C++

     

    Te Ajudei? da REP+.

    Creditos:Gareme(eu)

  17. Neste post,vou ensinar a quem nao sabe,fazer uma wand bem louca pro seu OT server.

     

    Va em: data>items>items.xml

     

    Abra o items.xml como bloco de notas.Aperte CTRL+F,vai aparecer um lugar pra voce digitar o ID do item que voce quer.

     

    Os IDs mais legais para wands sao:

    2436 -> Skull Staff

    2453 -> Arcane Staff

    7410 -> Queen's Sceptre

    7429 -> Blessed Sceptre

    7958 -> Jester Staff

    12609 -> Sem Discriçao (8.60)

     

    Bem depois de ter escolhido seu ID e procurado ele voce vai editalo.

    Apague tudo que tem la deixe o espaço e coloque isso:

    <item id="ID" article="an" name="Nome">

    <attribute key="description" value="Descriçao" />

    <attribute key="weight" value="1900" />

    <attribute key="weaponType" value="wand" />

    <attribute key="shootType" value="Tiro" />

    <attribute key="range" value="Sqms" />

    </item>

    Onde esta "ID" voce deixa o ID do item que voce quer nao va me deixar "ID" la se nao vai dar erro.

    Onde esta "nome" ali voce ira colocar o nome de sua wand.

    Onde esta "descriçao" e quando voce da look e aparece aquela mensagem junto com o item.

    Onde esta "Tiro" e o Tiro que ira fazer o percurso ate chegar no alvo,vou listar alguns "ShotType".

     

    Tiros:

    energyball

    earth

    smallice

    smallholy

    holy

    ice

    fire

    death

    energy

    suddendeath

    cake

     

    Voce escolhe e coloca la qual voce quiser.

    Depois de ter feito isso,salve e fexe o items.xml

    Bom,sua wand esta metade pronta,agora vamos ao weapons.xml

     

    Va em: data>weapons>weapons.xml

     

    Abra o weapons.xml e va na coluna que esta nomeada de "<!-- Wands -->"

    Faça um espaço la e adicione isso:

    <wand id="ID que voce colocou no items.xml" level="Level para usar" mana="Mana que a wand pegara" min="Minimo de Hit" max="Maximo de Hit" type="Type (efeito no alvo)" event="function" value="default"> <!-- Pode escrever qualquer coisa aqui -->

    <vocation id="1"/>

    <vocation id="2"/>

    </wand>

    Agora ali no "Level" voce colocara que level o player precisara ter para usar a wand.

    No "mana" e o tanto de mana que a wand ira precisar para efetuar os hits.

    No "min" e o minimo de hits que ela ira dar.

    No "max" o maximo de hits que ela ira dar.

    No Type e o efeito que fara no alvo,vou listar alguns.

     

    Types:

    physical

    earth

    ice

    holy

    fire

    energy

    death

     

    Depois disso em baixo ficara "<vocation id="1"/>" nesse lugar e as vocaçoes que poderam usa-la,o numero "1" e sorcerer e o numero "2" e druid dai se voces quiser tirar ou mudar,podem fazer o que quiserem.

     

    FIM DO TUTORIAL.

    Te Ajudei? da REP+.

    Creditos:Gareme(eu).

  18. Tutorial Ensinando como adicionar monstros ao Simone editor.

     

    Bom andei pesquisando por ai e descobri que muita gente que cria monstros

    personalizados não sabem adicionalos no mapa, alguns tentam adicionar

    pelo map-spawm, mas sempre quando o map era salvo eles tinha que fazer

    isso denovo. Por isso resolvi postar um tutorial explicando como

    adicionar esses monstros no Simone editor.

     

     

    Inicio

     

    Apos ter criado o monstro desejado, va na pasta do Simone map editor, e procure pelo arquivo Itens.xml

     

    Abra-o e adicione isso (se colokar numa linha no meio do documento nao tem

    erro, mas ficara desorganizado, algumas pessoas, preferem colocar os

    novos monstros ou no começo ou no final.)

     

    X" name="Y" type="monster"/>

     

    =-Explicando-=

     

    Configurando a variavel X:

    A letra X esta representando o ID que voce escolhera para esse seu novo

    monstro, escolha um ID inexistente, pois se o id escolhido já existir

    nao funcionara. Por exemplo: Suponhamos que eu tenha escolhido o ID

    4549. Então ficara assim:

     

     

    QUOTE

    4549" name="Y" type="monster"/>

     

     

     

     

     

     

    Configurando a variavel Y:

    A letra Y representa o nome do arquivo que voce colocou no seu monstro

    personalizado. Digamos que eu criei um monstro chamado "Supreme

    Knight", neste caso eu adicionarei este nome no local onde esta a

    variavel Y. Ficando assim:

     

     

    QUOTE

    X" name="Supreme knight" type="monster"/>

     

     

     

     

    Finalizando

     

     

    Bom depois de seguir estes passos a linha adicionada ficara por exemplo assim:

     

     

     

    QUOTE

    4549" name="Supreme knight" type="monster"/>

     

     

     

    para localiza-lo no map editor basta você ir em View>Windows>Jump to

    id..>ai coloque o id escolhido que o map editor autmaticamente ira

    selecionar para voce.

     

     

     

     

    e isso ai, espero ter ajudado em algo com esse tutorial..

     

    Tirando o id maximo.

     

    Tem um arquivo na sua pasta do simone que se chama Materials.xml, abra-o

    com o bloco de notas e procure uma linha com esses códigos:

     

    Depois de achar vá onde esta escrito toid="4551" e mude para 5000, ante (")

    sem parenteses, só salvar depois disso e usar normal.

     

    Te Ajudei? da REP+

    Creditos:Gareme(eu)

  19. Para criar um novo monstro, abra a pasta do seu ot, va em Data, abra a pasta Monsters.

    Bom, voce tem que criar um monstro com a aparencia de outro, vamos usar como exemplo o monstro Minotaur.

     

    Duplique o arquivo do monstro e renomeie com o nome desejado do seu monstro.

     

    O codigo é muito simples, la voce aumenta a for´a, adiciona novas falas (nao use acentos no arquivo como ~ é ^)

     

    Agora seu monstro esta criado, mas para voce poder coloca-lo no jogo, procure o arquivo monsters.xml, abra-o e adicione junto com os outros, aqui vai um exemplo do que deve fazer:

     

    [monster name="MinotaurRox" file="minotaurrox.xml" /]

     

    Os colchetes [] nao deverao ser adicionados, ao inves deles utilize < e >

     

    Monster name="nome do seu monstro" e file="nome do arquivo do seu monstro.xml"

     

    Pronto agora use um gm e sumone ele!

    /m nome do monstro

     

    Creditos by:Gareme(eu)

    Te Ajudei? da REP+

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...