-
Total de itens
32 -
Registro em
-
Última visita
Sobre JacksonXx
Informações
-
Char no Tibia
Não Jogo Tibia
-
Forma que conheci o xTibia
Otservs
-
Sou
Scripter
Últimos Visitantes
1061 visualizações
JacksonXx's Achievements
-
poketibia Como Mudar o Gender Indefinido Dos Pokemons?
tópico respondeu ao Kranzix de JacksonXx em Tutoriais para Iniciantes
Poxa Mano Valew Tava Precisando Desse Tutorial Meus Parabens! -
Man Quando eu coloco ele para usar fica assim /\ Sabe como resolver?
-
[Encerrado] [Pedido] Como fazer um slot para colocar um bike ?
tópico respondeu ao JacksonXx de JacksonXx em Tópicos Sem Resposta
consegui fazer sozinho ^^, para quem não sabe vou tar passando um tutorial depois -
[Encerrado] [Pedido] Como fazer um slot para colocar um bike ?
um tópico no fórum postou JacksonXx Tópicos Sem Resposta
Gostaria de saber como fazer um novo slot igual o do otpokemon e pokemonbr onde eu posso colocar e tirar a bike do solt quando eu quiser! Alguem ajuda ae -
[Encerrado] [Duvida] Como Retirar Isso?
tópico respondeu ao JacksonXx de JacksonXx em Tópicos Sem Resposta
Vlw -
Como Remover essas letrinas? Toda vez que eu logo, ou tiro o pokemon elas aparecem! Bom eu uso o serv gabrieltxu 1.0 sem level tem como remover essas letrinhas?
-
@Karmercenarx Cara o Erro é que essa Query Não Esta Colocada Na Sua Data Base Por Isso o Doesn't Exist Para Concertar Esse Erro Você Tem Execultar ela Na Sua Data Base
-
[REMOVIDO] JA FOI POSTADO
-
Os Melhores Scripts Para Sucesso Do Seu OtServ
tópico respondeu ao JacksonXx de JacksonXx em Lixeira Pública
Obrigado Pelo Aviso! -
resolvido [Encerrado] OTserv nao abre
tópico respondeu ao etarus de JacksonXx em Tópicos Sem Resposta
@etarus Posta Aqui Seu Config.lua Por Favor! Ou Posta Uma Print do Da sua DB na parte Player_items -
~RIPPING NOVAMENTE REMOVIDO!
-
[Actions] Como Fazer Uma Porta Que Precisa de Uma Key (Chave) Para Ser Aberta?
um tópico no fórum postou JacksonXx Actions e Talkactions
Introdução: _Olá, >>Hoje vou ensinar como fazer uma porta que precisa de uma Key Para ser aberta. °Dica: Esta Script é Muito Boa Para Se Usar em Quests Ou Em Locais Restritos! Vamos Lá: -Primeiro va em data/actions/scripts -Agora Crie um Novo Arquivo. Lua e Renomeie Para "chave". << Sem Aspas! Abra-o delete oque tem dentro e ponha isso: °Em azul e o Unique id que você vai colocar em um item a sua escolha no Map (pode ser 1 estatua..) °Em verde e o storagevalue dele. Isso e oque dertemina se ele ja fez ou não a quest (evite colocar mais de um storagevalue). °Em vermelho e o id da Key que ele vai pegar(Aqui no caso e a golden key 7.6) °Em roxo e aonde o Player que 'achar' a Key sera movido(não e necessário essa parte pois eu uso só para da um toque especial nela) -Ah, e não esqueça de adicionar essa tag no actions.xml que esta em data/actions <action uniqueid="9901" script="chave.lua" /> -Pronto temos a nossa Key, agora vamos configura-la: *Crie ou Copie um novo arquivo.Lua, renomeie para goldenkey abra-o e delete tudo que tem nele e coloque isso -Aqui é bem simples: °Em azul e o id da porta fechada (É possivel trocar desde que vc troque o proximo id tbm!). °Em vermelho e o id da porta aberta(como disse acima e só substitui-lo pela mesma porta só que ela aberta!). Agora em verde e o Unique id da Key que já fizemos no passo anterior que é 9901. -Coloque essa tag no actions q nem no passo anterior: <action itemid="2091" script="crystalkey.lua" /> -Pronto agora temos nossa chave funcionando vamos agora fazer a porta funcionar! *Crie ou Copie Um Novo arquivo e renomeie para doorgk,abra-o delete tudo e cole isso dentro dele: Em azul e o id da porta que você selecionou fechada. Em vermelho é o Unique id da porta que você colocara pelo Map editor. Em verde e a frase que aparecerá quando o player tente abrir a porta sem a Key. -Coloque essa tag dentro do actions.xml <action uniqueid="9902" script="doorgk.lua" /> Salve! ______________________________________________________________________________________________ Pronto temos agora uma porta que precisa de uma Key para ser aberta. Espero que gostem, e que façam bom uso! >> By: ~ JacksonXx ~ Gostou? REP + é Sempre Bem Vindo! -
Fir3element começou a seguir JacksonXx
-
[Tutorial] Basico De Como Ser Um Scripter
tópico respondeu ao JacksonXx de JacksonXx em Lixeira Pública
Vlw Pela Dica. -
Gabrieltxu começou a seguir JacksonXx
-
Introdução: >>Olá Xtibianos, Hoje Vim Trazer Mais Um Tutorial De Como Ser Um Scripter Um Das Areas Mais Importantes De Um Ot Serv >>Bom, Eu Dividi em fases Então vamos lá aprender a ser um scripter: NPC'S vou ensinar a base de um npc seller,passa o script de comando, Npc Seller: vá em data>Npcs> Copie qualquer um cole na pasta abra com bloco de notas, Vai estar Assim: <?xml version="1.0"?> <npc name="NOME script="Diretorio/Arquivo.lua" access="3"> <look type="look" head="head" body="body" legs="legs" feet="57"/> </npc> Explicando: Npc Name= Nome do Npc script= é onde está localizado o script do npc,ponha na pasta scripts dentro da pasta npc,e no final ponha o nome do arquivo lua,e sempre ponha .lua no final Acces = é o acesso do npc,por exemplo se um player de acces 4 chega nele e fala "hi" dá um debug no server,portanto se o acces de seu gm é 10000 o acces do npc tem que ser 10000. Look: é o Look do Npc,exemplo: se a ordem de numeros estiver 0,0,0,0 o Npc será todo branco,alguns ot's vêem as cores do outfit(acho) _________________-Script do Npc-_______________________ vai na pasta scripts copie qualquer um, e renomeie de acordo com o que vc pois no .xml do npc na pasta anterior no começo tem assim: Significados: ________________________________________________________ if string.find(msg, '(%a*)offer(%a*)') and cid == focus then selfSay('I am selling all types of rings!') end _________________________________________________________ Quando voce falar "offer" o Npc falará o que voce por nesta parte: selfSay('Aqui! Sempre entre parentese e aspas') voce pode por ele para falar mais coisas, Axe Ring: ________________________________________________________________ if string.find(msg, '(%a*)Se vc falar > axe ring(%a*)') and cid == focus then selfSay('Do You want to buy an Axe Ring for 400gps?')<Ele fala < talk_start = os.clock() itemid = 2208 <--Id do Objeto que voce vai comprar count = 1 <-- Quantidade cost = 400 <-- Custo(em gp's) talkcount = 1 <-- TalkCount(numero da pergunta,ex: se a pergunta é numero 1,a outra tem que ser 2 assim por diante,para vc fazer respostas diferentes para cada pergunta,depois explico melhor return end ___________________________________________________________- Agora a parte da resposta: if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0 buy(focus,itemid,count,cost) end if string.find(msg, '(%a*)no(%a*)') and cid == focus then selfSay('Ok, is there something else you want? If so tell me.') itemid = 0 count = 0 cost = 0 talkcount = 0 end if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0 buy(focus,itemid,count,cost) end se o char,falar yes,ele responde ao talk 1 if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 se voce por 2,3,4,etc.. vc tem que por a resposta de acordo if string.find(msg, '(%a*)no(%a*)') and cid == focus then selfSay('Ok, is there something else you want? If so tell me.') itemid = 0 count = 0 cost = 0 talkcount = 0 end se o char falar no, ele fla: Ok, is there something else you want? If so tell me, e nao acontece nada,e nada parte final vc poe: _____________________________________________________- if string.find(msg, 'bye(%a*)') and cid == focus then selfSay('Farewell, ' .. creatureGetName(cid) .. '!') focus = 0 itemid = 0 talk_start = 0 talkcount = 0 end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Next please!') talkcount = 0 end focus = 0 itemid = 0 talk_start = 0 end if focus == 0 then cx, cy, cz = selfGetPosition() randmove = math.random(1,50) if randmove == 1 then nx = cx + 1 end if randmove == 2 then nx = cx - 1 end if randmove == 3 then ny = cy + 1 end if randmove == 4 then ny = cy - 1 end if randmove >= 5 then nx = cx ny = cy end moveToPosition(nx, ny, cz) --summons = 30 --summons2 = 30 end end _______________________________________________ Ficando assim o script: pronto vc fez um npc seller,pelo menos a base,se vc quiser adicionar comando para vender,comando de respostas,vendas etc... LEMBRE-SE:SEMPRE PULE DUAS LINHAS(APERTE ENTER DUAS VEZES) Script de comando: _________________________________________________________________ elseif talk_state == <number> then if msgcontains(msg, 'yes') then if pay(cid,10000) then selfSay('/premmy 15 ' .. creatureGetName(cid)) selfSay('Now this character have some days of premium account.') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 _________________________________________________________________ Significados: esse comando é como funciona a premmy,onde está /premmy...vc troca pelo comando,exemplo: /m XxXxXXxXx,/promote e o outro selfsay é o que ele vai falar e aqui acaba a parte dos NPC'S Espero que entenderam qualquer duvidas msg me Ah Um exercicio para garantir,Faça um Npc Com o Nome E-plate,e ponham ele para vender uma e-plate e depois me falem os resultados, me falem error,error de concordancia,dificuldade em tal lugar etc... agora próxima fase: SPELLS Vá em Data>Spells,Copie e cole qualquer um e ponha o nome de Fire apague tudo dentro e ponha isso: ______________________________________________________________________________________________ area = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } attackType = ATTACK_PHYSICAL needDirection = false areaEffect = NM_ME_EXPLOSION_AREA animationEffect = NM_ANI_NONE hitEffect = NM_ME_EXPLOSION_DAMAGE damageEffect = NM_ME_DRAW_BLOOD animationColor = RED offensive = true drawblood = true UltimateExplosionObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0) function onCast(cid, creaturePos, level, maglv, var) centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z} n = tonumber(var) -- try to convert it to a number if n ~= nil then -- bugged -- ultimateExplosionObject.minDmg = var+0 -- UltimateExplosionObject.maxDmg = var+0 UltimateExplosionObject.minDmg = 0 UltimateExplosionObject.maxDmg = 0 else UltimateExplosionObject.minDmg = (level * 3 + maglv * 4) * 3.4 - 40 UltimateExplosionObject.maxDmg = (level * 3 + maglv * 4) * 4.0 end return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered()) end ______________________________________________________________________________________________ Explicando: Atack Type: Physical o que eu puis neste é o melhor pois o unico monstro imune é o diptrah e o ghost needDirection: É se precisa de direção,se voce colocar true,vc vai pricisar por 1,2,3,4 nas direções exemplo: se voce por direção,voce vai ter que por assim: exemplo exori flam ____________________________________________________________ area = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } _______________________________________________________________ e se você por false,só poe o numero 1,que vai acertar em tal area INDENPENDETE DA Posição areaEffect = NM_ME_EXPLOSION_AREA animationEffect = NM_ANI_NONE hitEffect = NM_ME_EXPLOSION_DAMAGE damageEffect = NM_ME_DRAW_BLOOD ______________________________________________________________________________________________ esses quatro é onde mudamos a animação... areaEffect: é o principal tipo,esse explosion que está ai,vai sai fire,igual uma ue,mais se pode mudar,para mudar vá em outras spells,exemplo quero por de sd, Vai na runa de sd vai em areaEffect e copie o que está lá e cole na magia hitEffect = NM_ME_EXPLOSION_DAMAGE quando vc hitar,acertar algum char ou monstro é o que vai ficar,nesse caso ae vai suir um fogo,para mudar é igual o primeiro,faça a mesma coisa só que no comando diferente(claro) os Outros deixe do jeito que está pois senão pode dar debug onde está assim: _____________________________________________________________ UltimateExplosionObject.minDmg = (level * 3 + maglv * 4) * 3.4 - 40 UltimateExplosionObject.maxDmg = (level * 3 + maglv * 4) * 4.0 end _____________________________________________________________ o dano vai causar,por 3x seu lv e 3.4x seu ml, vc pode diminui para fazer uma spell mais fraca, e aumentar para fazer uma spell exagerada, Você Pode encontrar diferentes tipos de atacks,modos,efeitos,na pasta Lib do seu OTServer Spells.xml Signs: spell name = Nome da Spell words = Palavras magicas)o que voê fala para soltar a magia) maglv = ml para soltar a spell mana = mana para soltar a magis enabled = Se a Magia é promovida ou não vocation id = é a vocação que a usa 1= sorc, 2= druid , 3= pally , 4= kina E Aqui Já Acabou a Parte das Spell Exercicio faça uma magia que saia,4 traços pros lados de qualquer tipo, e uma que saia 4 areas na sua frente para o lado que voce virar... MONSTERS Os monstros sao uns dos mais facéis Começando: <?xml version="1.0"?> <monster name="Elf" level="20" maglevel="30" experience="42" pushable="0" armor="15" defense="20" canpushitems="1" staticattack="50" changetarget="200" speed="190"> <health now="100" max="100"/> <look type="62" head="20" body="30" legs="40" feet="50" corpse="4061"/> <combat targetdistance="1" runonhealth="20"/> <attacks> <attack type="melee" maxdamage="60"/> </attacks> <defenses> </defenses> <loot> <item id="2969" countmax="15" chance1="100000" chancemax="0"/> <item id="3385" countmax="6" chance1="800000" chancemax="0"/> <item id="3312" chance="10000"/> <item id="3316" chance="20000"/> <item id="3310" chance="4000"/> <item id="3490" chance="25000"/> <item id="2811" chance="6666"/> <item id="2791" chance="100000"> <inside> <item id="3223" chance="5000"/> <item id="3523" countmax="4" chance1="800000" chancemax="0"/> <item id="3489" chance="9000"/> <item id="3288" chance="6666"/> </inside> </item> </loot> </monster> Os monstros sao facéis por causa da ordem olhe no começo bem facil de editar Explicando: Monster name = Nome do Monstro(lembre-se ele tem que ser renomeado por fora tambem, Level = Nao precisa nem falar né? quanto mais level mais forte MgLevel,quando mais ml mais forte as magias canpushitems,se o monstro pode mover objetos changetarget = indica a dificuldae,facilidade para o monster trocar de alvo combat targetdistance = a distancia de quantos sqm o monster deverá ficar do player runonhealth = A life em que o monstro irá fugir defenses = imunes do monter voices = voz dos monstros(aquelas alaranjadas) tudo quanto maior, mais forte o monstro... Atacks <attack type="melee" maxdamage="60"/> isso ele irá atacar com melee(fist somente) a o maximo de dano será 60 vc pode adicionar para ele tacar bolts> <attack type="distance" name="bolts" mindamage="<minimo>" maxdamage="<maximo>"/> arrows: <attack type="distance" name="arrows" maxdamage="60"/> em maxdamage vc altera o maximo que irá causar <atack type ="distance" Significa ataque do tipo distance(arrow,bolt,power bolt,spear,stones,entre outros) Danos Com Runas: <attack type="rune" name="nome da runa" exhaustion="exaustion do monstro" cycleticks="8000" probability="chances de acertar"/> Loot: <item id="3288" chance="6666"/> item id = id do item que vai cair, chance é a chance de cair maximo 10000,que cai sempre,no forum>downloads de scripts,outros, tem um topico falando as chances Summons: <summons maxSummons="Quantos Summons"> <summon name="Nome do Monstro" chance="Chance"/> </summons> para atacar Spells: <attack type="instant" name="Spell" exhaustion="500" cycleticks="20000" probability="40"/> e aqui termina os monstros <loot> <item id="3288" chance="6666"/> item id = id do item chance = chance do item cair aqui temos a lista de chances: Quests Quests é nas Actions, e na verdade nem é tão dificil ai vai crie um arquivo .lua chamado hmm _______________________________________________________________ Explicando: ______________________________________________________________ if item.uid == <id> then queststatus = getPlayerStorageValue(cid,<id>) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,5003,1) else _____________________________________________________________ if item.uid == <id> then onde está escrito <id> é a continuação exemplo vc vai em chest .lua(que se localiza na pasta actions) o ultimo foi 5010 o proximo deve ser 5011 e assim por diante if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") _________________________________________________________ if quest status == 1 traduzindo: se status de quest ==1 , traduzindo: se o player nao fez a quest -_____________________________________________________________- doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") ____________________________________________________________ Recebe esta msg e recebe o item doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,<id>,1) doPlayerAddItem(cid,2311,100 2311 é o id do item que o char recebe se voce quiser por level na quest add o seguinte antes de: _________________________________________________________ else doPlayerSendTextMessage(cid,22,"It is empty.") ________________________________________________________ add isso: doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.") end Não Necessariamente level,essa é a mensagem que ele recebe se não tiver Level e depois de: if queststatus == -1 then add isso: if getPlayerLevel(cid) >= 20 then if getPlayerLevel(cid) >= 20 then significa Se o player tiver Level <lv> ele passa na quest mais se for inferior doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.") e assim voce faz uma quest, depois é só ir no mapa editor,colocar o chets no lugar que vc quer,e clica com o direito e em uid add o numero da quest Lembre-se se a ultima foi 5010 a proxima é 5011 e assim por diante Próximo: e Ultimo (q demoro pakas heim muitos poukos devem estar lendo aki neh mais tudu bem) Lv Door ai vai: __________________________________________________-- Explicando: Coisa que vc precisa Mudar: if item.itemid == <id> and doorpos.x == <xxx> and doorpos.y == <yyy> and doorpos.z == <z> then <id> = Id da porta doorpos.x,doorpos.y,doorpos.z, São as coordenadas da Porta,isso você vê no MapEditor você poe o mouse sobre o lugar,e embaixo,do lado direito aparecem as coordenadas. Ajuste Isso de acordo com o lugar de onde voce por a level door no ot Level if playerlevel > 100 then Onde Está Escrito 100 then <100> é o level necessario para passar na door voce poe o level que quiser doPlayerSendTextMessage(cid,22,"Você precisa ser level 100 para passar.") Mensagem que o Player Recebe ao nao ter Level para passar... Exemplo: if playerlevel > 200 then doPlayerSendTextMessage(cid,22,"Se acha que passa né?Ahhh Rapa!Pricisa de Level 200,Meia Volta.") ______________________________________________________________________________________________ Bom Galera, Chegamos Ao Fim De Mais Um Tutoral Espero Que Tenham Gostado! Em Breve Mais Tutoriais! >> By: ~ JacksonXx ~ *Gostou Do Tutorial? Te Ajudou Muito? REP + São Bem Vindos!
-
O Servidor é PDA ?
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.