Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''script''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

  1. Visitante

    Pescando Tesouro

    Idéia de pescar tesouros: root_pk Formulação da Action: Arkilus Com esse mod dá pra pegar gps, mapa, ring, pearls, gems e diamonds com fishing. Usei como base o script de fishing que vem junto com o Yur 0.9.2 e fiz algumas modificações: -- ***************************************** -- adicione isso caso coloque para o mapa vir com algo escrito Não se esqueçam de declarar o actionid do map pro script de fishing: CODE Lembrando que podem haver erros porque ainda não tive tempo de testá-la fonte: ######
  2. agente.png Action de Statue agente.png Antes de mais nada dou créditos a - -Peonso- -Dimi-(Moderador das Apostilas Rox feliz.gif ) -Skoll- Bom galera como é meu primeiro Script pega leve se ficou muito sux ... To fazendo umas apostilas ai pra ver se melhoro - Vamos supor que você esta numa quest , mas no lugar da porta tem uma estatua de Gargoyle , e uma alavanca , então se acionarmos a alavanca aquela estatua de Gargoyle se transforma em um Gargoyle ( Não precisa ser necessariamente um Gagoyle pode ser outras coisas) é uma especie de melhoramento do Alavanca move pedras do Peonso ( Creditos dele ) feliz.gif mas a diferença é que só da pra puxar ela uma vez , porque se não iriam ficar sumonando direto pra upar wink.gif Espero que gostem Crie um arquivo chamado Gargoyle.lua na pasta scripts Abra como bloco de notas e adicione : No caso ai : 1020 - uniqueid (colocar na alavanca) 491,502,7 coordenadas da Estatua (ou seja da porta) 2711 - Alavanca Olha eu sei que não é tão bom , mas to começando ainda , tenho certeza que no futuro posso melhorar Desde já grato PS- Se já tem algo parecido aqui mil perdões !! Usei procura em "Alavanca", "Gargoyle" , "Sumonando" não achei nada parecido!
  3. Aew esta é a minha 1º action e tive a idéia de fazer um estilu de bed system por actions ke naum é igual ao tibia mas alguns ots naum tem bed system. façam um ficheio bed.lua na pasta actions/scripts ------ Bed System 0.2 by Colex -----max_sleep = 300sleep1 = 150function onUse(cid, item, frompos, item2, topos)if (getPlayerFood(cid) + sleep1 > max_sleep) thendoPlayerSendCancel(cid,"You cannot sleep.")return 1enddoSendMagicEffect(frompos,12)doPlayerSendTextMessage(cid,22,"Good Night")doPlayerSay(cid,"Ohhhhhhhh!!!",16)doPlayerAddHealth(cid,300)doPlayerAddMana(cid,300)doPlayerFeed(cid,sleep1)doPlayerSendTextMessage(cid,22,"You have been Sleeping.")return 1end Adicione nu ficheiro actions.xml: -----Beds---- <action itemid="2455" script="bed.lua" /> <action itemid="2457" script="bed.lua" /> <action itemid="2459" script="bed.lua" /> <action itemid="2461" script="bed.lua" /> <action itemid="2471" script="bed.lua" /> <action itemid="2473" script="bed.lua" />-----/Beds---- u cara da use na bed e aumenta logo 300 de hp e mana direto (da pra mudar ao vosso gosto) e dps vai aumentandu tipu food... Espero ke tenham gostado ^^ se tiverem alguma duvida é só postar ke eu tento ajudar :grin: flws
  4. Peguei num site a historia do PHP Pra voces itender melhor o que é PHP Cendo que eu num itendo ponbas nenhuma so o bazico e olha lá O que é PHP? PHP é uma linguagem que permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros da URL e links. A diferença de PHP com relação a linguagens semelhantes a Javascript é que o código PHP é executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é possível interagir com bancos de dados e aplicações existentes no servidor, com a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou qualquer tipo de informação confidencial. O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo o código HTML, ou leia de um outro arquivo. O que pode ser feito com PHP? Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita também com PHP, como coletar dados de um formulário, gerar páginas dinamicamente ou enviar e receber cookies. PHP também tem como uma das características mais importantes o suporte a um grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vários outros. Construir uma página baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP. Além disso, PHP tem suporte a outros serviços através de protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é possível abrir sockets e interagir com outros protocolos. Como surgiu a linguagem PHP? A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em 1995, e ficou conhecida como "Personal Home Page Tools" (ferramentas para página pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitários que rodavam "por trás" das home-pages: um livro de visitas, um contador e algumas outras coisas. Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o "FI" veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML (Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto. Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados de 1997 esse número subiu para mais de 50.000. Nessa época houve uma mudança no desenvolvimento do PHP. Ele deixou de ser um projeto de Rasmus com contribuições de outras pessoas para ter uma equipe de desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans, e esse novo interpretador foi a base para a versão 3. Atualmente o uso do PHP3 vem crescendo numa velocidade incrível, e já está sendo desenvolvida a versão 4 do PHP. Gosto? Comenta!!!
  5. Bom galera eu mexo com php a 10 meses +/- e vejo que php é uma linguagem muito abrangente e é considerada "intermediária". Php é uma linguagem de alto nível, ou seja, as funções, comandos, e etc... são escritas muito perto da linguagem humana (Inglês). Irei começar falando um pouco sobre lógica e o que a programação faz. Início da Primeira Aula: Hoje em dia você pode pegar várias apostilas de quaisquer linguagem, mas existem coisas que só aprendem na prática. Você não vai sair daqui programando tudo e etc... Irei explicar vários passos do php em quantas aulas forem preciso. - Sintaxe PHP Primeiro comece delimitando um código php. Use: <? // escreva o código php aqui ?> Após ter delimitado o código Vamos criar um script bem básico. Script de checagem de valores! <?$maxcap = 50; // aqui eu defini que a max capacidade é 50$playersonline = 30; // estamos imaginando que tenham 30 jogadores no servidorif($playersonline >= $maxcap) { echo 'Server is full'; }else{ echo 'Server is Empty'; } O script irá checar se a quantidade de playersonline é maior ou igual a quantidade de players que o servidor aguenta (Maxcap). Se for maior ou igual ele mostrará na tela 'Server is Full'...Se for menor ele mostrará 'Server is emprty'. Algumas notas que você tem que saber para entender e fazer o script acima. - Em php você não precisa colocar o tipo e tamanho das variáveis, tal como o c++ exige. - >= isso é igal a Maior ou Igual - echo serve para mostrar algo na tela - Sempre dentro de um if você deve fazer com parentêses if() - Após o if você precisa adicionar a linha de comando a ser executada - Exemplo: if(condições) {linha de comando;} -Lógica da programação! Em qualquer linguagem você precisa dar as conseguências, ou seja, o que o programa deve fazer se o caso X acontecer. Programação é uma mistura de criatividade com conhecimento. Você precisa conhecer os comandos e sintaxes de uma linguagem para dominá-la! Espero que tenham gostado, eu fiz somente uma instrodução...pois são 3 horas da manhã e to morrendo de sono, vou tentar ajudar vocês no que eu puder. Não sou nenhum gênio ou algo assim mas tenho uma experiência legal com php. Breve irei postar sobre c++ ...linguagem a qual estou estudando. Vlw - comentários!
  6. CorpsCool

    Invasion

    Ai galera peguei um aciton que faz Invasion no serve Yurots num tentei en outro serve ainda mais deve dar sim pq é action la vai o codigos: function onUse(cid, item, frompos, item2, topos) if getPlayerAccess(cid) ~=0 then topleft={x=135, y=34, z=7} bottonright={x=140, y=60, z=7} maxmonsters= nil checking={x=topleft.x, y=topleft.y, z=topleft.z} --Do Not Change summonedtotal=0 --Do Not Change repeat checkforsummon=0 --Do Not Change spawnrate=math.random(0,10) if spawnrate==0 and summonedtotal ~= maxmonsters then species=math.random(1,10) if species == 1 then checkforsummon = doSummonCreature("orc berserker",checking) elseif species == 2 then checkforsummon = doSummonCreature("orc leader",checking) elseif species == 3 then checkforsummon = doSummonCreature("orc rider",checking) elseif species == 4 then checkforsummon = doSummonCreature("orc shaman",checking) elseif species == 5 then checkforsummon = doSummonCreature("orc spearman",checking) elseif species == 6 then checkforsummon = doSummonCreature("orc warlord",checking) elseif species == 7 then checkforsummon = doSummonCreature("orc warrior",checking) else checkforsummon = doSummonCreature("orc",checking) end -- if species<5 and species >=0 then -- checkforsummon=doSummonCreature("dragon",checking) -- elseif species == 5 then -- checkforsummon=doSummonCreature("dragon lord",checking) -- end if checkforsummon~= 0 then summonedtotal=summonedtotal+1 end end checking.x=checking.x+1 if checking.x>bottonright.x then checking.x=topleft.x checking.y=checking.y+1 end until checking.y > bottonright.y --doPlayerSay(cid,"/B Dragons have been spotted near the city!",23) print("Number of creatures summoned:",summonedtotal) end return 1end e no Actions.xml botem <action itemid="2931" script="invasion.lua" /> depois entrem cum gm e f~ça o item 2931 clike nele e deu vai vim a imvasaum é isso ai esperaum que gostem
  7. alokk

    Idrune

    adicione issu no actions.xml <action itemid="3097" script="idrune.lua" allowfaruse="1" blockwalls="0" /> crie um arkivo.lua chamado idrune.lua e adicione isso abaixo function onUse(cid, item, frompos, item2, topos)if getPlayerAccess(cid) ~=0 thendoPlayerSendTextMessage(cid,22,'ID: '..item2.itemid..' | UID='..item2.uid..' | AID='..item2.actionid..' | '..topos.x..'/'..topos.y..'/'..topos.z..'')elsereturn 0endreturn 1end Creditos pro Heliton e Tworn (axo q eh assim q escreve)
  8. alokk

    Pick

    va no actions.xml e adicione 1 linha em qualquer lugar contendo > <action itemid="3394" script="pick.lua" /> crie um arkivo.lua chamado pick.lua e adicione abaixo> function onUse(cid, item, frompos, item2, topos)tilepos = {x=topos.x, y=topos.y, z=topos.z} -(-Não mecha nisso-)-if item2.itemid == 0 thenreturn 0endif item2.itemid == 231 and tilepos.x == 180 and tilepos.y == 67 and tilepos.z == 7 thendoTransformItem(item2.uid,600)doDecayItem(item2.uid)else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"Sorry not possible.")endreturn 1end [if item2.itemid == 231 and tilepos.x == 180 and tilepos.y == 67 and tilepos.z == 7 then] acima vc coloca as coordenadas e o tile que vc ker q transforme exemplo: 231 eh o tile pra transformar vc pode por kokeh 1 180,67,7 sao as coordenadas [doTransformItem(item2.uid,600)] aki eh o tile pelo ql o "231" no caso vai ser trasnformado OBS: eu nao sei quem fez por issu nao colokei os creditos (acho que foi o Troth) nao fui eu q fiz nao!
  9. CorpsCool

    Promotion!

    Vo posta um npc que vende Promoção exemplo quando o cara da look em alguem aparece druid ele vende a promoção dai vai aparece Elder Druid. O primeiro que fala mal eu numca mais apareço no forum xtibia to nervozo cum esses noob da dsigraça que fika falando ##### so pq naum sabe Ai vai o Script pro npc: focus = 0talk_start = 0target = 0following = falseattacking = falsefunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg) msg = string.lower(msg) if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! I sell promotions for 20k.') focus = cid talk_start = os.clock() elseif string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') then if isPromoted(cid) then selfSay('Sorry, you are already promoted.') focus = 0 else if getPlayerLevel(creatureGetName(cid)) >= 20 then if pay(cid,20000) then promote(cid) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end else selfSay('Sorry, you need level 20 to buy promotion.') end end elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 talk_start = 0 end endendfunction onCreatureChangeOutfit(creature)endfunction onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Next Please...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good bye then.') focus = 0 end endend é isso ai
  10. pegei de um amigo meu espero q gostem...ta igualzinhu a do tibia só tem q configura as posiçoes de acordo com o seu mapa...flws feito por Héliton Comentem PlX ---Actions.xml: // Vocation Quest <action uniqueid="9010" script="vocationquest.lua" /> --the switch <action uniqueid="9015" script="quests.lua" /> <action uniqueid="9016" script="quests.lua" /> ---Vocationquest.lua: function onUse(cid, item, frompos, item2, topos) end1pos = {x=227, y=210, z=8, stackpos=255} --onde o player1 sera teleportado quando a alavanca for puxada end2pos = {x=228, y=210, z=8, stackpos=255} --onde o player2 sera teleportado quando a alavanca for puxada end3pos = {x=227, y=211, z=8, stackpos=255} --onde o player3 sera teleportado quando a alavanca for puxada end4pos = {x=228, y=211, z=8, stackpos=255} --onde o player4 sera teleportado quando a alavanca for puxada ppl1pos = {x=221, y=192, z=10, stackpos=253} --posicao do player1 ppl2pos = {x=225, y=189, z=10, stackpos=253} --posicao do player2 ppl3pos = {x=229, y=192, z=10, stackpos=253} --posicao do player3 ppl4pos = {x=225, y=195, z=10, stackpos=253} --posicao do player4 ppl1 = getThingfromPos(ppl1pos) ppl2 = getThingfromPos(ppl2pos) ppl3 = getThingfromPos(ppl3pos) ppl4 = getThingfromPos(ppl4pos) item1pos = {x=220, y=192, z=10, stackpos=255} --item1pos item2pos = {x=225, y=188, z=10, stackpos=255} --item2pos item3pos = {x=230, y=192, z=10, stackpos=255} --item3pos item4pos = {x=225, y=196, z=10, stackpos=255} --item4pos item1 = getThingfromPos(item1pos) item2 = getThingfromPos(item2pos) item3 = getThingfromPos(item3pos) item4 = getThingfromPos(item4pos) if item.uid == 9010 and item.itemid == 1945 and item1.itemid == 2674 and item2.itemid == 2455 and item3.itemid == 2175 and item4.itemid == 2376 and ppl1.itemid > 0 and ppl2.itemid > 0 and ppl3.itemid > 0 and ppl4.itemid > 0 and getPlayerVocation(ppl1.uid) == 2 and getPlayerVocation(ppl2.uid) == 3 and getPlayerVocation(ppl3.uid) == 1 and getPlayerVocation(ppl4.uid) == 4 then doRemoveItem(item1.uid,1) doSendMagicEffect(item1pos,13) doRemoveItem(item2.uid,1) doSendMagicEffect(item2pos,13) doRemoveItem(item3.uid,1) doSendMagicEffect(item3pos,13) doRemoveItem(item4.uid,1) doSendMagicEffect(item4pos,13) doTeleportThing(ppl1.uid,end1pos) doSendMagicEffect(ppl1pos,10) doSendMagicEffect(end1pos,10) doTeleportThing(ppl2.uid,end2pos) doSendMagicEffect(ppl2pos,10) doSendMagicEffect(end2pos,10) doTeleportThing(ppl3.uid,end3pos) doSendMagicEffect(ppl3pos,10) doSendMagicEffect(end3pos,10) doTeleportThing(ppl4.uid,end4pos) doSendMagicEffect(ppl4pos,10) doSendMagicEffect(end4pos,10) doTransformItem(item.uid,item.itemid+1) elseif item.uid == 9010 and item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) else return 0 end return 1 end ---Quests.lua: [code] function onUse(cid, item, frompos, item2, topos) --by CVS - Modified by Heliton-- if item.uid == 9015 then queststatus = getPlayerStorageValue(cid,1001) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"You have found a 100 platinum coins.") doPlayerAddItem(cid,2152,100) doSendMagicEffect(topos,12) setPlayerStorageValue(cid,1001,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 9016 then queststatus = getPlayerStorageValue(cid,1002) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"You have found a ring of healing.") doPlayerAddItem(cid,2214,1) doSendMagicEffect(topos,12) setPlayerStorageValue(cid,1002,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end else return 0 end return 1 end
  11. Primeiro, vc vai na pasta de seu ot, C:\Documents and Settings\Fulano\Desktop\ots\data\actions\scripts, nesse lugar ai, data, actions,scripts, e vai no chest.lua, manda editar e vai aparecer isso: function onUse(cid, item, frompos, item2, topos) -- bright sword quest if item.uid == 5001 then queststatus = getPlayerStorageValue(cid,5001) if queststatus == -1 then if getPlayerLevel(cid) >= 20 then doPlayerSendTextMessage(cid,22,"You have found Bright Sword.") doPlayerAddItem(cid,3233,1) setPlayerStorageValue(cid,5001,1) else doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.") end else doPlayerSendTextMessage(cid,22,"It is empty.") end Isso eh uma quest, a da bright sword, tem muitas quests lah, vc vai na ultima e copia, da enter e cola, ai vai aparece lah uns negocio q vc tem q mudar,eh muito importante! Exemplo: -- 10k quest elseif item.uid == 5026 then(5026=numero da quest,tipo se a ultima foi 5024, a proxima eh 5025, lembrando q eh ateh 5999) queststatus = getPlayerStorageValue(cid,5026)(5026=numero da quest,tipo se a ultima foi 5024, a proxima eh 5025, lembrando q eh ateh 5999, muda isso tbm if queststatus == -1 then(Dexa assim) if getPlayerLevel(cid) >= 15 then(Level requerido para pegar o prêmio) doPlayerSendTextMessage(cid,22,"You have found 10k.")(Mensagem que aparece na tela quando o player completa a quest) doPlayerAddItem(cid,2981,1)(2981, id do item que vai ganhar na questsoh ir no itens.xmle editar e procurar com ctrl+f) setPlayerStorageValue(cid,5026,1) (5026,novamente o numero da quest) else doPlayerSendTextMessage(cid,22,"You need level 15 to get prize.") (Mensagem que aparece quando o player naum tem o level necessário para completar a quest) end else doPlayerSendTextMessage(cid,22,"Its empty.") (Mensagem que aparece quando o player ja completou a quest) end end return 1 end (O Primeiro End,eh o final da quest, mas kada vez q vc criar uma nova quest tem q deletar os proximos end e o return 1 e colocar na ordem no final dessa quest) Bom, depois disso, abra o mapeditor, colokeos respawms dos bixos desejados pra quest, e o bau, clike com o botao direito no baú, e vai em poperties, coloca lah: Action id: 5025 (ou o numero da quest) Unique id: 5025 (ou o numero da quest) Entao feche, e salve, abra seu server e va no baú e pegue o item, depois de matar os bixos eh claro , Bom, espero ter ajudado Atenciosamente, Rafix Qualquer duvida posta ae! ----------------------Edit--------------------- Como fazer quest de escolha (OPCIONAL) Agora para quem quier aprender como faz baus estilo o da annihilator, 2 baus ou mais, e vc só pode pegar um item, irei ensinar agora. (a pedidos) é bem simples, vou tentar explicar como funfa e vou postar exemplo. nao tem o script inicial postado aqui? pronto, se for 2 baus vc junta 2 scripts em um só, se for 4, 4 scripts em um só, sendo que quando se faz isso se adiciona else antes dos outros if. vou fazer um exemplo com 3 baus ok? vamos lá. -- Tutorial de Quest by Neto =] -- function onUse(cid, item, frompos, item2, topos) if item.uid == X¹ then --primeiro bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z¹") item_uid = doPlayerAddItem(cid,ID¹,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end elseif item.uid == X² then --segundo bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z²") item_uid = doPlayerAddItem(cid,ID²,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end elseif item.uid == X³ then --terceiro bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z³") item_uid = doPlayerAddItem(cid,ID³,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end else return 0 end return 1 end Para configurar é bem simples, é igual a um script normal, vc tem que preencher as variaves normalmente. nota: vc vai notar uma diferença neste script, alem do elseif, vc pode ver que tem variaves diferentes assim: X¹, X² e X³. vou ensinar como vc vai configurar. o X é unique id, vc vai configurar como em um script normal, só que x¹ é diferente de x² que é diferente de x³. O mesmo se aplica aos Z's, aos ID's, note que nao tem varios "Y", ou seja, o Y do primeiro bau é = ao do segundo e = ao do terceiro. --Partindo para o exemplo pratico-- eu aconselho vc a fazer os UNIQUEIDS seguidos como no exemplo pratico. X¹ = 3000 X² = 3001 X³ = 3002 Y = 3000. Z¹ e ID¹ = Magic Sword (2400) Z² e ID² = SCA (2431) Z³ e ID³ = TH (2421) PS: todos estes ids sao para 7.4, nao sei os de 7.5 decorados. --Substituindo as variaveis-- -- Tutorial de Quest by Kinho =] -- function onUse(cid, item, frompos, item2, topos) if item.uid == 3000 then --primeiro bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Magic Sword") item_uid = doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end elseif item.uid == 3001 then --segundo bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Stonecutter Axe") item_uid = doPlayerAddItem(cid,2431,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end elseif item.uid == 3002 then --terceiro bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Thunder Hammer") item_uid = doPlayerAddItem(cid,2421,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end else return 0 end return 1 end Créditos: Boladao
  12. Primeiramente vamos escolher o otserver Se for para fazer um ot 100% 7.5,axu q vcs devem usar a versao YourOtS 7.5, q entao testei e consegui deixala online com 23 jogadores durante o decorrer de 5 horas sem dar 1 bug ou qualquer defeito Vou colocar todas as url para caso alguma esteja fora do ar, me avisem Binários:Binários YourOTS 7.5 Sources:YourOTS 7.5 Sources Libs:YourOTS 7.5 Libs Accmaker:YourOTS 7.5 Acc Maker CONTINUANDO!!! Depois de o otserv baixado chegamos a parte de arrumalo,o ip,a pagina de conta,o exausted entre outras coisas mas Primeiramente vai em aonde vc estraiu sua pasta do otserv e clique em "CONFIG.LUA" tudu oq esta escrito ai sao as configuracoes pessoais de seu otserv, como nome , ip,localidade,porta e outros. Procure uma frase escrita "-- exhausted time in ms (1000 = 1sec) exhausted = 2000" Neste 2000 sujiro q troque para 1000 para nao ficar muito tempo o exausted do seu server...Vamos passar para outra etapa o maximum player do seu server procure uma frase q diga "-- max number of players allowed maxplayers = "35" Se o Seu computador não eh lah akelas coisas deixe maximu 15 pessoas para nao ficar aquela coisa lagada e bixus que demorao pra andar. Outra coisa q muita pessoa ainda tem duvida é "COMO POR UM SERVER ON" FACIO !!! Toda vez q vc reiniciar o seu computador ou a internet sempre veja o seu ip novamente e coloque aonde esta escrito no config.lua...esta escrito deste modo quanda vc acaba debaixar o seu otserv -- the ip the server should redirect too ip = "127.0.0.1" Neste lugar q estah este numera troque para seu ip e salve o config.lua e seu server esta online COMO FAZER UM SITE PHP? Simples e facio soh seguir as dicas a baixo Primeiramente vamos precisar do Easy php q vcs podem encontrar no site Easyphp:Easy Php 7.5 AccMaker:Php para o Site 7.5 Depois de terminar de baixar os dois instale o Easy php em "C:\ .Que fique com este diretorio "C:\EasyPHP1-7",Se estiver com este diretorio esta tudo bem. Agora entre em "C:\EasyPHP1-7\apache\conf" de um clique no arquivo httpd.conf e edite uma linha escrito "PORT 80" somente aperte"ctrl+f"e digite "Port 80" que automaticamente ele encontrará a linha q esta escrito "Port 80" ...Depois de encontrada mude o 80 para "8090" q ficara assim "Port 8090" e seu apache jah esta configurado! Agora pegue todos os php q passei ah voces e coloque na pasta com o destino de "C:\EasyPHP1-7\www" extraia todos para esta pasta,que eh a partir disto q seu site irá rodar Tambem precisamos que vc pegue sua pasta do Otserv e coloque no diretorio "C:\EasyPHP1-7\www" para q todas as account e senha sejam tranferidas automaticamente pras pasta destinadas Para acessar o seu site ficara asim "http://seuip:8090" somente mude o seuip por o ip original ou o ip fixo COMO FAZER O NPC DE RUNA VENDER RUNAS COM 255x? É simples e rapido vá em "C:\EasyPHP1-7\www\YurOTS\data\npc\scripts"e procure o arquivo runes.lua de um duplo clique ache uma linha escrita "elseif msgcontains(msg, '255 hmm') and focus == cid then buy(cid,3136,10,800)" troque o numero "10" por 255 ou o tanto de carga voce quera q venha uma hmm vendida na loja e o numero "800"eh o ´preço da runa troque para o tanto que voce axar necessario ESPERO TER AJUDADO BASTANTE E ESPERO QUE ME ENTENDAO...QUALQUER DUVIDA DEIXA COMENTE OU SUPORTE VIA MSN Spanker xD
  13. Administrador

    Pesquisa XTibia

    Bom galera, Estou tentando por meio dessa perquisa por um pouco mais de "ordem" não só na equipe do fórum/site como em todo conteúdo e em scripts que eu fiz e não tive tempo de terminar. Gostaria que todos deixassem um comentário com essa formatação: Nome: seu nome Nota para o Site: de 0 a 10 Comentário: deixe seu comentário, bugs encontrados e tudo mais Espero construir um site melhor para vocês com isso. Abraçosss...
  14. Atualizado para o 7.6 Adicione no actions.xml <action uniqueid="1011" script="gate.lua" /> então crie um arquivo nomeado de pedra.lua na pasta actions/scpripts e adicione o seguinte code. function onUse(cid, item, frompos, item2, topos)gatepos = {x=43, y=112, z=7, stackpos=1} -- Lugar do item q vai tirargetgate = getThingfromPos(gatepos)if item.uid == 1011 and item.itemid == 1945 and getgate.itemid == 1030 thendoRemoveItem(getgate.uid,1)doSendMagicEffect(getgate.uid,2)doTransformItem(item.uid,item.itemid+1)elseif item.uid == 1011 and item.itemid == 1946 and getgate.itemid == 0 thendoCreateItem(1030,1,gatepos)doSendMagicEffect(getgate.uid,2)doTransformItem(item.uid,item.itemid-1)elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1end OBS: Um unique ID é adicionado apenas pelo mapeditor, pode-se escolher qualquer número acima de 1000 ( abaixo é reservado ) até 9999 e nunca se repetir. OBS2: Apenas modifique as coordenadas gatepos para a coordenada de onde se localiza oq vc deseja remover. OBS3: Se quiser fazer outro tem que escolher outro UID e fazer outro lua.
  15. Adicione isso no actions.xml <action uniqueid="7000" script="anihi.lua" /><action uniqueid="7001" script="anihi.lua" /><action uniqueid="7002" script="anihi.lua" /><action uniqueid="7003" script="anihi.lua" /><action uniqueid="7004" script="anihi.lua" /> Depois crie um arquivo nomeado de anihi.lua dentro da pasta scripts e cole o code abaixo. -- Annihilator script v2.1 by GriZzm0 Modified by Drake, Alokk.---- Exemplo:---- player?pos = A posição dos players antes de puxar a alavanca.-- player? = Lugar q o kra está qnd teleporta.-- player?level = Confere o level dos players.-- questslevel = O Level necessario para fazer a quest.-- questtatus? = Confere os Status da quest.-- demon?pos = Cordenada dos Demons q irão aparecer ao puxar a alvanca.-- nplayer?pos = Posição onde cada player será teleportado.---- UniqueIDs used:---- 7000 = A Alavanca-- 7001 = Demon Armor chest.-- 7002 = Magic Sword chest.-- 7003 = Stonecutter Axe chest.-- 7004 = Present.--function onUse(cid, item, frompos, item2, topos)if item.uid == 7000 thenif item.itemid == 1946 then player1pos = {x=265, y=222, z=12, stackpos=253} player1 = getThingfromPos(player1pos) player2pos = {x=264, y=222, z=12, stackpos=253} player2 = getThingfromPos(player2pos) player3pos = {x=263, y=222, z=12, stackpos=253} player3 = getThingfromPos(player3pos) player4pos = {x=262, y=222, z=12, stackpos=253} player4 = getThingfromPos(player4pos) if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then player1level = getPlayerLevel(player1.uid) player2level = getPlayerLevel(player2.uid) player3level = getPlayerLevel(player3.uid) player4level = getPlayerLevel(player4.uid) questlevel = 100 if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then queststatus1 = getPlayerStorageValue(player1.uid,6026) queststatus2 = getPlayerStorageValue(player2.uid,6026) queststatus3 = getPlayerStorageValue(player3.uid,6026) queststatus4 = getPlayerStorageValue(player4.uid,6026) if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then demon1pos = {x=261, y=238, z=12} demon2pos = {x=263, y=238, z=12} demon3pos = {x=265, y=240, z=12} demon4pos = {x=266, y=240, z=12} demon5pos = {x=262, y=242, z=12} demon6pos = {x=264, y=242, z=12} doSummonCreature("Demon", demon1pos) doSummonCreature("Demon", demon2pos) doSummonCreature("Demon", demon3pos) doSummonCreature("Demon", demon4pos) doSummonCreature("Demon", demon5pos) doSummonCreature("Demon", demon6pos) nplayer1pos = {x=264, y=240, z=12} nplayer2pos = {x=263, y=240, z=12} nplayer3pos = {x=262, y=240, z=12} nplayer4pos = {x=261, y=240, z=12} doSendMagicEffect(player1pos,2) doSendMagicEffect(player2pos,2) doSendMagicEffect(player3pos,2) doSendMagicEffect(player4pos,2) doTeleportThing(player1.uid,nplayer1pos) doTeleportThing(player2.uid,nplayer2pos) doTeleportThing(player3.uid,nplayer3pos) doTeleportThing(player4.uid,nplayer4pos) doSendMagicEffect(nplayer1pos,10) doSendMagicEffect(nplayer2pos,10) doSendMagicEffect(nplayer3pos,10) doSendMagicEffect(nplayer4pos,10) doTransformItem(item.uid,item.itemid+1) else doPlayerSendCancel(cid,"Sorry, not possible.") end else doPlayerSendCancel(cid,"Sorry, not possible.") end else doPlayerSendCancel(cid,"Sorry, not possible.") endelseif item.itemid == 1945 then if getPlayerAccess(cid) == 3 then doTransformItem(item.uid,item.itemid-1) else doPlayerSendCancel(cid,"Sorry, not possible.") endendelseif item.uid == 7001 thenqueststatus = getPlayerStorageValue(cid,7001)if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a Demon Armor.") doPlayerAddItem(cid,2494,1) setPlayerStorageValue(cid,7001,1)else doPlayerSendTextMessage(cid,22,"It is empty.")endelseif item.uid == 7002 thenqueststatus = getPlayerStorageValue(cid,7002)if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a Magic Sword.") doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,7002,1)else doPlayerSendTextMessage(cid,22,"It is empty.")endelseif item.uid == 7003 thenqueststatus = getPlayerStorageValue(cid,7003)if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a StoneCutter's Axe.") doPlayerAddItem(cid,2431,1) setPlayerStorageValue(cid,7003,1)else doPlayerSendTextMessage(cid,22,"It is empty.")endelseif item.uid == 7004 thenqueststatus = getPlayerStorageValue(cid,7004)if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a Great Shield.") doPlayerAddItem(cid,2522,1) setPlayerStorageValue(cid,7004,1)else doPlayerSendTextMessage(cid,22,"It is empty.")endendreturn 1end Depois edite as coordenadas dos 4 players e dos demons, pronto já tem sua anihilator.
  16. vo incina a fazer runa de manafluid para 7.5 e o npc para vende faça o seguinte abra a pasta "data/actions/script" e abra qualquer um arquivo e delete tudo e coloquei o seguinte codigo: function onUse(cid, item, frompos, item2, topos) mag = getPlayerMagLevel(cid) if mag >= 3 then doSendMagicEffect(topos,1) doPlayerSay(cid,"Ahhhh! Fresh mana fluid!",16) doPlayerAddMana(cid, 150) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You don't have the required magic level to use that rune.") end return 1 end Feito isso vai em salva como e salve como nome "mf" e salve na pasta "data/actions/scripts". Agora abra o arquivoo "actions" localizado na pasta "data/actions" abra ela e coloque: <action itemid="3121" script="mf.lua" /> Agora a parte mais importante abra o arquivo "items" localizado na pasta "data/items" a faça o seguinte e certinho abra e vai em localiza ou F3 e localize o a palavra "runes" ele vai localiza a palavra --runes agora aonde tiver <item id="3085" name="blank rune" type="rune" maglevel="0" weight="0.1" /> esses codigos coloque o seguinte codigo: <item id="3121" name="manafluid rune" type="rune" maglevel="1" weight="0.1" /> Feito isso salva e deu esta feito a sua runa de manafluid agora vamus ao NPC so vo por os codigo: -- Respawn position set ox = 18 oy = 105 oz = 6 -- sven, the bewitched bunny -- it's a sample script, i dont know lua well enough to -- make some fancy code -- the good thing is, that this scripts can easily be developed -- seperately from the main programm -- perhaps we should write some docu -- the id of the creature we are attacking, following, etc. focus = 0 talk_start = 0 target = 0 following = false attacking = false function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(id, stackpos) if id == focus then focus = 0 selfSay("Goodbye, then.") end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) < 3 then selfSay('Hello, ' .. creatureGetName(cid) .. '! I sell blank runes.') focus = cid talk_start = os.clock() end if msgcontains(msg, 'hello') and focus == 0 and getDistanceToCreature(cid) < 3 then selfSay('Hello, ' .. creatureGetName(cid) .. '! I sell blank runes and manafluids.') focus = cid talk_start = os.clock() end if msgcontains(msg, 'heal') and focus == cid then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I cannot heal you.') focus = 0 talk_start = 0 end if msgcontains(msg, 'manafluid') and focus == cid then sell(cid,2969,3121,100,100,"Here you are.","You need 100 gold.") talk_start = os.clock() end if msgcontains(msg, 'mf') and focus == cid then sell(cid,2969,3121,100,100,"Here you are.","You need 100 gold.") talk_start = os.clock() end if msgcontains(msg, 'mana fluid') and focus == cid then sell(cid,2969,3121,100,100,"Here you are.","You need 100 gold.") talk_start = os.clock() end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 40 then if focus > 0 then selfSay('Who is the next?...') end focus = 0 end --nothing special has happened --but perhaps we want to walk around a bit? 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 e é isso ai espero que gostem dai apouco vo por um codigo para troca dinhero dando 2 click no dinhero mais to no trampo mais é isso ai flw se naum gosta naum comenta
  17. Soluções para PHP Galera, isso não é bem um tutorial, são possíveis soluções para problemas quando tentam fazer o site em PHP para seu servidor. Tive muita dificuldade pra fazer, e não recebi ajuda, mas como consegui, vou falar tudo que fiz para que funcionasse. 1° Desative todos os seus Firewalls (inclusive o do win XP). 2° Se esta usando algum programa anti Nuker, lembre-se de remover a porta 8090 da lista, para que outros tenham acesso ao site. 3° Não utilize uma versão mais adiantada do que a posta no tutorial, no caso os tutos são para versão 1.7 do easy PHP, se baixou a 1.8 não vai funcionar. (Meu prob ). 4° Nuca se esqueça de alterar a Port 80 para a 8090 no httpd.conf do Apache. 5° Sempre teste 2 ou mais versões de um Script de cadastramento antes de tomar conclusões. 6° Não esqueça de liberar a porta 8090 em seu Modem caso possua Adsl. 7° Lembre-se que cada Script é configurado de forma diferente para cada PHP, então não esqueça de alterar a localidade da pasta Players e Accounts nos respectivos PHP's. 8° Para facilitar sua vida, use um programa específico para abrir um arquivo .PHP, eu indico esse (PHP Editor 2.22)* 9° Faça sempre com calma, leia atenciosamente os tutoriais, e faça exatamente igual, não tente improvisar se não tiver certeza. 10° E o mais importante, SEMPRE procure ajudar, e compartilhar para ser ajudado, tenha paciencia com aqueles que te ajudam, pois lembre-se, eles não são obrigaados a isso. Espero ter ajudado alguem pelo menos ! *Quando ocorre erros como o exemplo abaixo, ele sempre informa a linha que ocasionou o problema, então fica facil, no erro abaixo, pode ver nitidamente, que o endereço da pasta do easyphp, é diferente do endereço configurado pelo usuario. Creditos para <-[|OraculO|]->
  18. Criando suas próprias Runas Primeiramente aqui vão algumas dicas: -Procure criar boas fórmulas de ataque -SEMPRE edite a cor do ataque da runa (Se é uma explosão, um powerbolt, ataque físico,etc) -Edite a animação de quando a runa acerta o alvo. Bom, vamos começar a criar nossas runas Para editar tudo isso, mantenha o arquivo spell.lua aberto. Ele esta localizado em data/spells/lib. Os ids de runes começam em 2260 (blank rune). Teste os Ids desejados para a criação de runas exclusivas 1- Vá até o spells.xml e crie a TAG da runa <rune name="runa" id="2301" charges="9" maglv="1" mana="0" enabled="1"></rune> 2- Ainda no spells.xml crie a TAG pra fazer a rune. No lugar de palavra magica voce coloca o que é necessario dizer para criar a runa <spell name="runa" words="palavra magica" maglv="5" mana="200" enabled="1"><vocation id="1" /><vocation id="2" /></spell> 3- Vá para items.xml e adicione a tag do item id da runa <item id="2301" name="palavra magica" type="rune" maglevel="1" weight="0.1" /> 4- Na pasta INSTANT dentro de SPELLS e crie um arquivo chamado palavra magica.lua E escreva isso: attackType = ATTACK_NONEanimationEffect = NM_ANI_NONEhitEffect = NM_ME_NONEdamageEffect = NM_ME_MAGIC_BLOODanimationColor = BLUEoffensive = falsedrawblood = falsefunction onCast(cid, creaturePos, level, maglv, var)n = makeRune(cid,2301,9); return nend 5- Na pasta RUNES dentro de SPELLS e crie um arquivo chamado runa.lua (Escolha o nome da sua runa) agora divida em duas partes. Se for runa q nao precisa a mira acertar o alvo (Ex: explosion) é um script se precisar (Ex: SD) é outro. 5.1 Runas Sem Mira area = {{0, 1, 0}, {1, 1, 1}, // <-------- edite a area a seu gosto. Onde tem 1 havera ataque{0, 1, 0}}attackType = ATTACK_PHYSICAL // <- Tipo de ataque: energy, fire, poison, physical, burst etc.needDirection = false // <----- "false" para sem mira(explosion) e "true" para com mira (sd)areaEffect = NM_ME_EXPLOSION_AREA // <----- animação q vai apareçer onde tem 1 no desenho da areaanimationEffect = NM_ANI_FIRE // <--- animação do caminho do ataque (fogo da explo, entre outros (veja o spell.lua na pasta data/spells/lib para mais detalhes)hitEffect = NM_ME_EXPLOSION_DAMAGE // <-- animação quando a rune atinge o chao/alvodamageEffect = NM_ME_DRAW_BLOOD // <-- animação quando causa dano no alvo (Neste caso sangue)animationColor = RED // <-- Cor do danooffensive = truedrawblood = trueExplosionObject = 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}ExplosionObject.minDmg = (level * 2 + maglv *3) * 0.6 - 50 // <-- formulas de ataque (/\ Dano minimo .... \/ Dano maximo)ExplosionObject.maxDmg = (level * 2 + maglv *3) * 0.9 + 25return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, ExplosionObject:ordered())end 5.2 Runas Com Mira n doTargetMagic-- attackType: tipo do ataque (energy, poison, fire)-- cid: id do alvo-- Targetpos: posição do alvo-- animationEffect: animação do projetil (powerbolt, bolinha preta da sd, etc)-- damageEffect: efeito mostrado quando rune causa dano ao player-- animationColor: cor do dano-- offensive: indica se a magia é de atk ou de cura-- drawblood: determina se o ataque deixa poça de sangue.-- minDmg: dano minimo-- maxDmg: dano maximo-- returns true if the spell was casted.attackType = ATTACK_PHYSICALanimationEffect = NM_ANI_SUDDENDEATHhitEffect = NM_ME_MORT_AREAdamageEffect = NM_ME_DRAW_BLOODanimationColor = GREYoffensive = truedrawblood = trueSuddenDeathObject = 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}SuddenDeathObject.minDmg = (level * 2 + maglv *3) * 1.3 - 30 //<-- edite as formulas como quiserSuddenDeathObject.maxDmg = (level * 2 + maglv *3) * 1.7return doTargetMagic(cid, centerpos, SuddenDeathObject:ordered())end Bom é isso ae galera, Enjoy !!! Abraço, Don
  19. Introdução: O htaccess é um arquivo cujo nome é .htaccess, como se fosse apenas identificado pela sua extensão (possui um ponto e a extensão). É um arquivo de configuração usado pelo servidor web Apache - e apenas pelo Apache. Como o Apache domina amplamente o ambiente web, vale a pena conhecer este arquivo e seu grande potencial. FUNÇÕES DO htaccess: A função mais conhecida do htaccess é a de possibilitar a apresentação de páginas personalizadas para o erro 404 (arquivo inexistente). A mais conhecida, mas apenas uma das muitas funções possíveis: proteger diretórios com senha, redirecionamento automático, alteração de extensões de arquivos, bloqueio de usuários com determinados endereços IP, autorização de IPs específicos, impedir listagem de diretórios, ativar SSI, usar páginas índice diferentes, adicionar tipos MIME, evitar o "hot linking" e outras. As principais funções do htaccess serão abordadas, explicando e exemplificando seu uso, como também apresentando suas limitações e perigos. EXEMPLOS DE CONFIGURAÇÃO: -Documento de erro: Para especificar seus próprios documentos de erro, tudo o que você precisa é adicionar o seguinte comando, em UMA LINHA, ao seu arquivo htaccess: ErrorDocument code /diretorio/nomearquivo.ext ou ErrorDocument 404 /erros/naoencontrado.html e, de forma análoga, ErrorDocument 500 /erros/errointerno.html Você pode usar os nomes que quiser para seus documentos de erro - para facilitar, recomendo que lembrem a função das mesmas - e colocá-los em qualquer diretório que seja acessível pela web através de uma URL. A primeira barra corresponde ao diretório raiz do site. Eu, pessoalmente, prefiro mantê-los num diretório próprio para facilitar a manutenção e para poder controlar spiders indexando estas páginas através de um arquivo ROBOTS.TXT. Na hipótese de capturar todos os erros acima mencionados e direcionar o usuário para páginas específicas, o arquivo htaccess teria a seguinte configuração: ErrorDocument 400 /erros/badrequest.html ErrorDocument 401 /erros/authreqd.html ErrorDocument 403 /erros/forbid.html ErrorDocument 404 /erros/notfound.html ErrorDocument 500 /erros/serverr.html Não se esqueça de que cada precisa estar numa linha única própria. Pode-se também especificar um endereço URL completo, como por exemplo http://seusite.com/erros/notfound.html, apesar de que a forma padrão é o endereçamento relativo como mostrado acima. -Proteção por senha: A primeira coisa a fazer é criar um arquivo chamado .htpasswd. A convenção do nome para este arquivo é a mesma do .htaccess. É como se fosse um arquivo sem nome com a extensão .htpasswd, ou seja, um ponto seguido de htpasswd. Este arquivo conterá o NOME e a SENHA ENCRIPTADA de todos os usuários que poderão ter acesso à area protegida. Por exemplo, o usuário com nome numaboa e senha numaboa pode ser registrado como uma das alternativas abaixo: numaboa:$1lX5fd*H1jPk numaboa:62V4UJ/K/c/Wc numaboa:81x8xIBUZnuLw É claro que ninguém em sã consicência vai usar nome e senha iguais, mas este é apenas um exemplo. Observe que o nome fornecido é colocado no início, seguido por dois pontos e pela senha encriptada de acordo com o método proposto para o Apache: para Unix e Linux é usada a função crypt() do próprio Apache (descrito na documentação htpasswd do Apache) e para Windows é o MD5 modificado para Apache (descrito na rfc131 e que você pode encontrar na Internet RFC/STD/FYI/BCP Archives).Se você procurar pela web vai encontrar alguns sites que oferecem o serviço de encriptação com os chamados htpasswrd generator. CONFIGURANDO O ARQUIVO htaccess AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd AuthGroupFile /dev/null AuthName AreaProibida AuthType Basic require user numaboa A primeira linha corresponde ao caminho completo do servidor para o seu arquivo htpasswd. Note que não se trata de uma URL e sim de um caminho de servidor. Verifique qual é o caminho correto servidor do seu site (eu costumo usar a função phpinfo() do PHP). Saiba também que, se você colocar o arquivo htaccess no diretório raiz, todo o site ficará protegido por senha -- o que, provavelmente, não é a sua intenção. Você pode usar qualquer nome para o seu arquivo de senhas, como senhas.txt ou qualquer outra coisa. Basta referenciá-lo corretamente. Além disso, se por acaso o caminho contiver nomes de diretórios com espaços, então será preciso colocar o caminho entre aspas -- por exemplo "/usr/local/diretorio seguro/senhas.txt". AuthName é o nome da área protegida. Também pode ser qualquer nome que você desejar, mas evite caracteres especiais como $, %, ç ou ã. AuthType é o tipo de autenticação. Neste caso foi escolhida a Basic porque se trata de uma autenticação porque estaremos usando a autenticação HTTP básica. Com require user numaboa estamos indicando que apenas o usuário numaboa poderá ter acesso a esta área. Se quisermos aumentar a lista de usuários permitidos, devemos substituir require use numaboa por require valid-user. Neste caso, todos os usuários que estiverem no arquivo de senhas poderão acessar a área protegida. Se quisermos que apenas os usuários explicitamente mencionados ou seja, apenas alguns da lista de senhas, possam acessar a área protegida, o bloco de código precisa ser: AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd AuthGroupFile /dev/null AuthName AreaProibida AuthType Basic <Limit GET> require user numaboa require user sobmedida </Limit> -Proteção por senha: O htaccess usa Redirect para controlar qualquer solicitação para uma página específica (ou uma localização não específica que, infelizmente, leva a loops infinitos com certa facilidade) e, se encontrar a dita solicitação, ele a redireciona para a página que você especificou: Redirect /dirAntigo/arqAntigo.html http://yoursite.com/dirNovo/arqNovo.html'>http://yoursite.com/dirNovo/arqNovo.html Note que a diretiva é composta de 3 partes que precisam estar numa mesma linha: o comando Redirect, a localização do arquivo/diretório que você quer redirecionar relativa ao diretório raiz do seu site (/dirAntigo/arqAntigo.html corresponde a seusite.com.br/dirAntigo/arqAntigo.html) e a URL completa para onde a solicitação deve ser redirecionada. Cada uma das 3 partes é separada por UM espaço, mas tudo em uma única linha. Você também pode redirecionar um diretório inteiro usando simplesmente Redirect /dirAntigo http://yoursite.com/dirNovo/ Usando este método, você pode redirecionar todo o conteúdo do diretório, independente do que você fizer com a sua estrutura de diretórios. É o método de efeito global mais rápido que existe. -Bloqueando IPs: Adicione o seguinte código no seu arquivo htaccess -- logicamente mudando os IPs para os desejados -- pondo cada comando numa linha própria: order allow,denydeny from 123.45.6.7 deny from 012.34.5.allow from all Você pode recusar endereços IP ou blocos IP. O código acima nega acesso ao site se as requisições vierem do endereço IP 123.45.6.7 ou de qualquer subdomínio do bloco IP 012.34.5 (012.34.5.1, 012.34.5.2, 012.34.5.3, etc). Imagine só, com a segunda opção você pode até bloquear acessos vindos de determinado país. Coisa de louco... É claro que, se você desejar, pode bloquear o acesso de todos usando deny from all ao invés de allow from all, mas isto não seria muito lógico -- a não ser que queira fechar para balanço )). Mas nem só de endereços IP vive o bloqueio. Você também pode usar nomes de domínios, por exemplo, allow from .numaboa.com ou deny from www.pentelho.com.br. O primeiro libera www.numaboa.com, andre.numaboa.com, etc. O segundo bloqueia apenas o que vier de www.pentelho.com.br. -Mudando a pagina inicial: Que negócio é este de DirectoryIndex? Nada demais. É apenas o comando que permite especificar qual o arquivo que deve ser carregado quando chegar uma solicitação de diretório ou URL que não especifiquem uma página em especial (tipo http://www.numaboa.com/). Se você cansou de ver entrar seusite.com.br/index.html não tem problema -- pode mudar para seusite.com.br/adoropizza.html. DirectoryIndex adoropizza.html Isto faz com que a página default de todos os diretórios do seu site passe a ser adoropizza.html. Mas, se você quiser poder usar outras páginas ou até scripts como default, basta adicionar referências a gosto: DirectoryIndex adoropizza.html index.cgi index.pl nhaca.htm Adicionando a linha acima ao seu arquivo htaccess e imaginando que o arquivo htaccess esteja no seu diretório raiz, o resultado será o seguinte: quando um usuário digitar seusite.com, adoropizza.html é a primeira a ser procurada no seu diretório raiz; se for encontrada, ela é enviada ao usuário e a procura pára por aí; se não for encontrada, index.cgi é a próxima... e assim por diante até nhaca.htm. Caso nenhum dos arquivos relacionados seja encontrado, aí entra o famigerado erro 404. Lembre-se de que todos os diretórios abaixo do diretório raiz obedecem as regras ditadas pelo primeiro htaccess acima deles, a não ser que o diretório possua seu próprio htaccess. Se não existirem outros htaccess em subdiretórios, para todos os diretórios do site vale o htaccess do diretório raiz -- as páginas default serão sempre as mesmas. É por isso que, mesmo não personalizando um htaccess próprio, as páginas default são index.html, index.htm, default.html, default.htm, etc -- o pessoal do servidor já fez esta configuração inicial. Já usei este expediente para "proteger" alguns diretórios, geralmente com gráficos ou scripts, os quais não queria que fossem listados. Fazia um htaccess para o diretório indicando uma página inexistente: Tchan! erro 404! Solução pouco elegante mas eficaz. Eu disse "usei", não uso mais. Hoje utilizo redirecionamentos, aliás, nosso próximo tema. É isso, espero ter ajudado vocês até mais felipemv
  20. $ipdoservidor = 'morphyra24h.servegame.com'; // muda aqui o ip do seu servidor$porta = '7171'; // mude aqui a porta a qual o servidor está rodando@$socket = fsockopen("$ipdoservidor", $porta);if($socket) // se socket == true{fwrite($socket, chr(6).chr(0).chr(255).chr(255)."info");$data = fread($socket, 2048);preg_match("#online=\"(.*?)\" max=\"(.*?)\"#", $data, $match);echo "<font color=\"#008000\"><b>$match[1]</b></font> /<font color=\"#FF0000\"> <b>$match[2]</b></font>"; // vai mostrar players/maxplayersfclose($socket);}else // caso o socket for diferente de true ( false){ echo "<font color=\"#FF0000\">OFFline</font>"; } Insira isso entre as linhas <? e ?> que delimitam o code php. Este script irá mostrar a você: 14 / 20 dependendo dos dados do servidor, é claro. Bom eu arrumei o code acima para ficar melhor entendido. Espero ter respondido sua pergunta.
  21. Npc que Troca Dinheiro, Tem alguns bugs mas ja ajuda Ta ai o Npc q troca dinheiro, vc fala change gold dai ele troca 100gps por 1 platinum fala change 1k ele troca 1000gps por 10 platinum e fala change 10k que ele troca 10000gps por 100 platinum BUGS Assim q vc trocar o dinheiro e quiser trocar + vc tem q colocar dentro de uma bp ou guardar em outro lugar, pq se ñ o Npc vai trocar a platinum coin como se fosse gold. Mais uma coisa o arquivo ".txt" é so salvar como ".lua" e colocar na pasta scripst Configura ele assim no xml: Agora o txt:
  22. Este tuto é de autoria de: Zechs_Merkise bem, sejam criativos, pq o resto eu vou ensinalos aki as funções estao ai, agora vou trabalhar em explica-las sempre sempre o action tem q começar comfunction onUse(cid, item, frompos, item2, topos)endentre o function onUse e end voce coloca os codigos ai esta o basico, agora vamos para o objeto voce pode usar todas akelas funções sendo q todas tem q dar uma descrição diferente entre ( ) e vou tentar explicar todas getPlayerFood(uid) esse uid eh um uniqueid para declarar um uniqueid voce tem q ir no arquivo do mapa, editalo, procurar as coordenadas no mapa do item e logo em seguida vai ter itemid="id"/> ai voce adicionar no lugar daki itemid="id" uniqueId="um numero bem grande e q voce se lembre" o uniqueid tb pode ser cid( creature id) entao o normal do getPlayerFood eh getPlayerFood(cid) getPlayerHealth(uid)akela explicação do PlayerFood tb serve pra ca, geralmente usado como getPlayerHealth(cid) getPlayerMana(cid) tb getPlayerLevel(cid) getPlayerMagLevel(cid) getPlayerName(cid) getPlayerPosition(cid) getPlayerSkill(cid,skillid) na PlayerSkill voce coloca cid e coloca skillid( numero da skill) n estou lembrado, mas por favor alguem do forum edit ai e ajeita getItemRWInfo(uid) getThingfromPos(pos) Detalhe... como declarar uma posição? se caso for a de um player cujo poderar estar em movimento voce faz assim playerpos = getPlayerPosicion(cid) ai no getThing.... vai ficar getThingfromPos(playerpos) pra declarar a posição de algumm tile voce faz o seguinte tilepos = {x=x, y=y, z=z} xyz sao as coordenadas do mapa e quando voce for chamar a função getThingfromPos do tile voce coloca getThingfromPos(tilepos) doRemoveItem(uid,number) bem esta função remove um id UNICO, pois se voce colocar um idnormal ele podera remover qualquer do mapa q esteja a sua vista doPlayerFeed(uid,food)n sei como funciona, n sei se o uid pod ser trocado por cid, nunca usei isso doPlayerSendCancel(cid,texto) sabe quando o cara anda contra a parece a aparece a mensagem, sorry you cant walk on it ou alguma coisa parecida, pois eh, ele faz aparecer uma mensagem assim. pra funcionar voce coloca doPlayerSendCancel(cid,"o texto entre aspas") doTeleportThing(uid,newpos) a variavel do newpos eu ja ensinei antes como declara, eh so usar a mente o uid(uniqueid) voce pode usar como uniqueid mesmo e como cid, pois isso depende muito, se voce quiser teleportar um item, voce usa uid e se quiser teleportar player usa cid doTransformItem(uid,novo item id)bem, esse caso eh exclusivo como o doRemove, eh obrigatorio q seja um uniqueid, pois ele poderá tranformar qualquer um do mapa, isso depende mto. e o novo id eh o id do item q vai aparecer no lugar do uid doPlayerSay(uid,text,type) nunca testei mas da pra ter uma ideia deve ser o seguinte. so cid no lugar do uid, o testo entre aspas "" e o type deve ser alguma coisa q n sei , como funciona? doPlayerSay(cid,"Eu Sou ######",10) no type eu coloquei 10 mas n sei se eh correto, como ja disse nunca usei essa função. o q acontece? o cara diz eu sou ###### sem querer lol doSendMagicEffect(uid,position,type) uid acho q eh cid, position tem q declarar, type voce vai em spells\libs\lib.lua lah tem alguns types, dai voce coloca representados pelos numeros q tem lah doChangeTypeItem(uid,new_type)n faço menor ideia, se alguem do forum souber, fix plxs doSendAnimatedText(uid,text,color)uid ai eh cid, text entree aspas "", color voce ve no spell\libs\lib tarararara, eu uso geralmente entre 15 e 120 no lugar do color doPlayerAddSkillTry(uid,skillid,number) uid ai eh cid, skillid eh o numero representante da skill, e number eh a quantidade de skills trys q acresenta, bastante util pra fazer club ring e etc doPlayerAddHealth(cid,health)n tem por onde, esse ai eh obrigado ser cid, health eh a quantidade de life q almenta. doPlayerAddMana(cid,mana)mesma coisa do health doPlayerAddItem(uid,itemid,numero ou type) esse ai o uid tem q ser cid, itemid id do item, numero ou type voce colocar quantidade de itens q tem q ser adicionado, se for o caso do itemid for = flask fazio entao o numero vai ser = type, exemplo type = 7 dai vai vim um mana fluid doPlayerSendTextMessage(uid,messageclasses,message)uid tem q ser cid, messageclasses voce ve no libs lah do spells e tem q ser representado pelo numero e message entre "" doShowTextWindow(uid,maxlen,canwrite)nunca usei essa função, mas acho q pode ser uid e cid, maxlen = numero maximo de letras, canwrite n sei mas acho q pode ser yes ou no ou entao 0 ou 1, sei lah doDecayItem(uid) acho q tem q ser uid msm, tipow, essa função eh usada no exemplo. torch pegando fogo entrei ai dá o decay e fica pela metade da o decay fica pequena e apaga doCreateItem(itemid, numero ou type, posicion) itemid nem precisa fala, numero ou type = o outro action lah de cima q n lembro qual foi e a posicion tem q declarar. Atualização doSetItemSpecialDescription(uid,desc) Da uma descrição diferente a um item doSetItemText(uid,text) Adiciona um texto ao item doSetItemActionId(uid,actionid) Adiciona um uid(actionid) a um item dependendo da hora em q voce ativar essa função getPlayerStorageValue(uid,valueid) FUNÇÃO IMPORTANTE!!! faz quest usando essa função... Maiores informações, vide o post de Sarietip, Como fazer quest( Tutorial), ele varifica se há certo valor no storage do player.xml setPlayerStorageValue(uid,valueid, newvalue) ele adicionar certo valor ao storeage do player.xml doSummonCreature(name, position) função feita pra quando actionar o lua do action ele sumonar monstros comentem pra mim ajudar e ajeitar o topico hehehe, esqueci de colocar como colocar no actions.xml para da load no script sendo o item de rosto um uniqueid <actions uniqueid="uid" script="nome.lua"/> Lembrando que o Tuto foi inicialmente feito para o HotServ... + pode ser facilmente adaptado para outras versões de OT.
×
×
  • Criar Novo...