Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''action''.

  • 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. E aí galera do Xtibia, beleza? Hoje tô aqui trazendo um script que eu não encontrei aqui no Fórum, então resolvi fazer ele. "Ain, mas pra ki ki eli schervi?" Simples. Ele funciona de maneira muito semelhante ao "teste de vocations" de Dawnport. Vindo itens e pots ao passar pelo tile, e impedindo que tu passe pelo piso caso tenha ultrapassado o lvl máximo. Foi testado em TFS 0.4 rev 3777. Bom, sem mais enrolação: Crie um arquivo chamado knight.lua na pasta Movements e cole isso aqui: E adicione a tag no movements.xml: "Ain, mas esse aí só vai transformar em Knight" Simples, é só customizar a seu gosto, modificando no config{} o id da voc. Bem, foi isso aí. Caso alguém tenha erros, é só comentar aqui que tentarei ajudar. E caso alguém queira aprimorar e postar aqui, sinta-se livre, recomecei a scriptar há pouco tempo.
  2. Olá Galera estava me arriscando em programar em lua e decidi criar algo bem simples mas útil ! vamos lá então ! Em Actions.xml Adiciona Isto: E Em Data/Actions/Scripts Cria um Arquivo Lua Chamado "addonbox" e Adiciona Isto Dentro Dele: REP +
  3. Eae galera do Xtibia hoje venho liberar à vocês a base "PokemonSelest, Ja vou avisar é PDA contem bugs. Porem nao sao dificil de resolver. Ja Deixa aquele REP Maroto (y) [informaçoes] -Pokémons da 1°a 2 Geraçao e algums megas [COMPLETA] :v -Shinys nao estao completos -Mega Evoluções -Servidor sem level nos Pokémons -Sprites atualizadas Maioria recebeu sprites novas -Algums items novos [ERROS/BUGS] Que eu lembre contém ums bugs facio de arrumar, so lembro de dois no momento -Revive esta bugado quando usa ele da erro na distro -Unique item aconcelho a retirar por crasha o serve por ser pda. - Apenas algums erros no mapa Ex: buraco que nao leva a lugar nenhum, maioria foi resolvido. [sISTEMAS BASICOS] No servido contém - go/back 100% - catch system 100% - nurse system 100% - boost system 100% - aura system 100% - Npc nick 100% E algums que nao me lembro [Ajustes] - Algumas hunts arrumadas - Algumas casa que nao estava funcionando arrumadas :v - Charizard valley arrumada - Add ride em algums pokes que nao tinha [Dowload-Scan] Servidor : http://www.mediafire.com/download/p6y97elqpoddwl2/PokeSelest.rar Scan : https://www.virustotal.com/pt/file/83fedb34b79a4bfd452075ab57221df95c768f1a0bbe73b13f37310a382e9c26/analysis/1465158271/ Client : http://www.mediafire.com/download/t4xq7ue541hs1c3/ClientPxS.rar Scan : https://www.virustotal.com/pt/file/9c95738af7024b058ce3c475812b0714a6cc36dddd74cd9998b3acdee16e0c92/analysis/1465157726/ Bom proveito Deixarei um print para ver o servidor. - Creditos - Slicer [pelo servidor]Brun123 [por alguns scripts, e por criar o pda]Stylo Maldoso [Pelo Mapa ]Bolz [Por edita boa parte da base]Xtibia [Por algums scripts entre outras coisas]Zipter98 [Pelo system mega evoluçao PXG]Eu (Marcos Speker's) [ Por add megas no client, add hunts nova, e tbm algums system, talkactions]
  4. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Preview; ├ Source; ├ Download; ├ Scan; ├ Creditos └ Desculpas. • Informações • •Senha do god: kevick/123mudar. --- Versão 1.0 --- • Boat System 100%, com a seguinte rota: De Pallet town a cinnabat city. • Perfect icon system 95%. 110 icons -- Removido tinha muitos bug, e influenciava a nurse a não hela alguns pokemon, quem sabe eu coloco na proxima versão 2.1 • Life do jogador aumenta quando come comidas ou sucos. --- Versão 1.1 --- • Passivas - "Psyduck" e "Golduck" - "Pikachu", "Raichu", "Shiny Raichu" > Electric charges - "Alakazam", "Tentacruel", "Gengar" - Blast mind e Scary face - "Scyther", "Scizor", "Shiny Scyther", "Hitmontop", "Shiny Hitmontop", "Pineco", "Forretress" > Counter helix • Dark Eye funcionando perfeitamente. • Shiny(Monstros ajeitados) •nenhum xD • Shinys aparecem aleatoriamente, pelo mapa. Por centagem de dar um: 2% de chance • Ditto system funcionando 100%. • !cd aprimorado, ele informa quanto tempo falta para dar Teleport com pokemons psychicos. • Ditto não pode transformar-se em pokemons de GINASIOS e o player tem que ter o level do pokemon que quer transformar. • Bug, quando morria a pokebola ficava em use. <:- Retirado -:> • Nova arvore colada no jogo, caminho (RAW/OTHERS) ou 12198, bonitinha. • Novo potion adicionado, só players, com level 10 ou mais, podem usar. --- Versão 1.2 --- • "Spray level up" adicionado, ele upa um level do player, não importando qual. --- Versão 2.0--- • removido todos os bug do jogo 90% sem bug 1 geração 100% • moves refeitos agora estao todos 100% -- primeira geração • 2 geração não testada • erro no fly concertado, quando o player dava order em cima do fly dava bug no distro -- fixed • Colocado barra de Pokebar no servidor OTC BPO necessario configurar • Erro no pvp fuchsia dava debug e erro no Distro fixed • Boost System tava com uns problema mais agora esta funcionando por enquanto • Nurse helando todos os pokemons em todas as Balls • Tile para entra na central de trocas arrumado Dava debug • Debug ao entra no ginazio arrumado • Removida ilha de gelo é muito grande , removendo ela melhora o desempenho do servidor , carai o bagui era um continente • Adicionado algumas areas premium account • Removido icon system Tinha muito bug , e bugava os pokemons iniciais • iniciais, Charmander,Squirtle e Bulbasaur -- sem bug • Npc Carlos compra iniciais por 25 Dollars • Pokemons passivos Não atacam o Player B para nossa alegria XD funcionava assim quando o player A atacava um pokemon o pokemon ia atacar o player B e C • Adicionado CORRER Agora o player pode correr, esse não é acumulativo exemplo se o player falasse correr 2x seguida a speed dobrava agora não dobra mais • Gate of expertise não funcionava o player bugava e nao passava pela porta, agora esta arrumado basta por action 1025,1050,1055~~~~ para player lvl 25,50,55 passar • Todas as houses foram reconfiguradas e foram refeitas, avia house que items desapareciam agora estão todas 100% para uso • Box não funcionava Dava debug, eo pokemon vinha bugado, Agora Fixed xD • Debug na praia de Cerulean -fixed • Nurse Agora heala os pokemons Shiny! • Avia muitos lugares com Debug Decidir colocar OTC • Gengar, Gastly e Haunter não ficavam invisivel • Bug no stun spore sleep powder, e posion powder, arrumados por enquanto esta em observação • Bug de cowndown , as vezes dava bug e o player podiam usar quantas vezes quiser o mesmo move - fixed • Iniciais agora estão funcionando corretamente • Stones de evolução estavam bugadas nada grave mais concertado • IP 127.0.0.1 Client a mesma coisa (client peguei de outro serve :b) •Order 100%. • As ID town foram arrumadas • Fly/ride/Teleport para premium • Comando /additem do god, ele pode dar items para tosos os players online Exemplo: /additem 2160, 10 • Erros Do Distro • Na distro nenhum por enquanto Crash -- 1x motivo nunca de reload em movements huehue • Bugs• --mecher no lick move 1 - nao fixo lick nao deixa o inimigo lento e não pode dar muito dano -- Falta OPCODE nas Source -- meganium -- maior parte dos bug estao no move 7 -- Algumas spells de pokemoins estao trocadas -- nao mechi em pokemons da segunda geração -- não mechi nos shinys -- Debug em algumas skills Eletricas -- Nurse as vezes nao hela pokemon e da erro na distro -- Shinys estão desconfigurado [23/07/2014 17:19:44] [Error - Spell Interface] [23/07/2014 17:19:44] In a timer event called from: [23/07/2014 17:19:44] data/spells/scripts/poke/nightshade.lua:onCastSpell [23/07/2014 17:19:44] Description: [23/07/2014 17:19:44] (luaDoCombat) Creature not found • PrintScreen • • Preview • Versão 2.1 Remoção de mais bugs Remakes de pokemons novas Outfit Refazer as cidades com os novos items ilha de gelo Free player vip com 25% de exp Chat VIP readicionar drop em todos os pokemons. Configurar chance dos drops additem que falta no loot mais npc de quest mais quest add quest de Boxs substituir alguns respawn e colocar pokemon da segundageração com remake Novas cidades e o que aparecer a mais na cabeça • Sources BUGs Corrigidos • ~Otpokemon v2.0 TFS 0.3.6 •Removido bug de clonagem com o elfbot •Resolvido alguns bug de crash agora a chance de crash sera reduzida •resolvido bug que o pokemon desaparecia ao se distanciar do player, •resolvido bug nas source do npc que fazia dar lag erros loucos no Distro • Outros • Catch 100% Fly 100% Flash 100% Surf 100% Ride 100% Rock Smash 100% Cut 100% Teleport 100% (!h pra ver os lugares e !h nomedacidade para ir ate a cidade) Control Mind 99.9% Order 100% Catch 100% Goback 100% Portrait 100% Pokedex 100% m1~m12 100% Hold position 100%(para o pokemon fikar parado vc diz .h pra ele se mover dnovo vc diz .h =D) !lg para mudar a linguagem (English-Português) Talkactions 100% NIck System 100% Efeito ao upar level • Download's • Server+Source OtClient OldClient • PATCH'S: • CREDITOS: Valakinhas pela dash v6 open source usada como base Kevick- editar mapa, adicionar sistemas e remakes e refazer o mapa
  5. Olá, gostaria de pedir um script cuja o NPC de Torneio teleporte o player para uma determinada localização ao falar "Entrar". ^^ +REP
  6. Atualização: Retirado bug de não conseguir se divorciar Retirado bug do NPC não responder após o pedido ser feito. Retirado outros vários bugs que não to afim de digitar. Introdução: É o sistema de casamento conhecido, porém foi reformulado para funcionar em versões mais recentes. O sistema contém: Item: Os jogadores que se casar receberão um Wedding ring com seus nomes e data do casamento. Outfit: jogadores que se casam recebem outfit, caso se divorciem, perder as outfits. Look: o look mostra com quem é casado. Comandos: /marriage info -- mostra em uma janela o preço do casamento/divórcio e o level minimo para casar. /marriage status -- mostra com quem é casado e a data do casamento. Sobre o divorcio: não é preciso que, para se divorciar, os 2 players casados estejam online. Exemplo: JOÃO e casado com MARIA, JOÃO vai até o npc e paga um preço para de divorciar, só quem pede o divorcio que paga a taxa, logo MARIA não precisa pagar nada pois seu Ex-Patner JOÃO já pagou. O que ela precisa fazer é "assinar" com o npc o seu divorcio também. Como casar? Player que vai pedir (1): Player que vai aceitar (2): Na sua db execute: CREATE TABLE marriage_system ( id INTEGER NOT NULL, player_id INTEGER NOT NULL, partner VARCHAR( 255 ) NOT NULL, marriage_date INTEGER NOT NULL, PRIMARY KEY ( id ) ); Caso você ter e querer a outfit Husband e Wife(de casamento) no seu servidor, vá na pasta Data > Xml > outfits.xml e adicione isso na outfit: quest="150420" que irá ficar assim: <outfit id="23" quest="150420"> <list gender="0" lookType="329" name="Wife"/> <list gender="1" lookType="328" name="Husband"/> </outfit> Mods: Npc: Configuração: marry_config = { OnlyDifferentSex = false, -- se precisa ser do sexo oposto Marry_Price = 300000, -- quanto vai custar o pedido de casamento Divorce_Price = 100000, -- quanto vai custar o divórcio Level = 50, -- que level precisa ser para casar MaxSqm = 7, -- aqui é quantos sqm eles precisam estar perto um do outro para se casar Text = {'I love you!','My love!','Baby dear!'}, -- frases que vão sair ao se casar RingID = 10502, -- id do ring que receberão ao se casar TimeAccept = 30, -- tempo que o jogador tem para aceitar o pedido de casamento storage1 = 300235, -- n mexa storage2 = 300236, -- n mexa storage3 = 300237 -- n mexa } Alguns membros pediram pra traduzir para o português mas poderia dar conflito em alguns servers.
  7. data/actions/double.lua function onUse(cid, item, fromPosition, itemEx, toPosition)local player = Player(cid)player:setStorageValue(80000, os.time() + 2 * 60 * 60)Item(item.uid):remove()player:say("You have just activated 2 hours of Double Experience!", TALKTYPE_MONSTER_SAY)return trueend data/actions.xml <action itemid="8981" script="double.lua"/> data/events/player.lua function Player:onGainExperience(source, exp, rawExp) local thing = self:getStorageValue(80000) if thing > os.time() then return exp * 2.0 end return expend data/events.xml Mude <event class="Player" method="onGainExperience" enabled="0" /> Para <event class="Player" method="onGainExperience" enabled="1" /> Créditos: imkingran
  8. Hello, remaker script for tfs 1.x. talkactions.xml <talkaction words="!ownbp" script="ownbp.lua"/> ownbp.lua local config = { cost = 1000, -- Cost (GP) ownTime = 24 * 60 * 60 * 1000, -- Time (24 horas) backpackId = 2000 } function onSay(player, words, param) local playerID = player:getGuid() local owner = (playerID + 100) local ownerName = player:getName() local function noOwner(o) o:removeAttribute(ITEM_ATTRIBUTE_DESCRIPTION) o:setActionId(0) end if (player:removeMoney(config.cost) == true) then local backpack = doPlayerAddItem(player:getId(), config.backpackId, 1) if (backpack ~= nil) then doSetItemSpecialDescription(backpack, ownerName..' owns this container.') doSetItemActionId(backpack, owner) addEvent(noOwner, 1000 * config.ownTime, backpack) end else doPlayerSendCancel(cid, "You do not have the amount of GP ("..config.cost..").") end end actions.xml <action itemid="2000" script="ownbp.lua"/> ownbp.lua function onUse(cid, item, fromPosition, target, toPosition, isHotkey) local playerID = cid:getGuid() -- getPlayerGUID(cid) local owner = (item.actionid - 100) if (owner > 0) then if (owner ~= playerID) then doPlayerSendCancel(cid, "You aren\'t owner of this container.") return TRUE end end end by @@azi
  9. Os items para receber o addon é configurável. talkactions.XML <talkaction words="!rank" separator=" " script="buyaddon.lua"/> buyaddon.lua local text = '--Addon List--\n!buyaddon "citizen\n!buyaddon "hunter\n!buyaddon "mage\n!buyaddon "knight\n!buyaddon "summoner\n!buyaddon "warrior\n!buyaddon "barbarian\n!buyaddon "druid\n!buyaddon "wizard\n!buyaddon "oriental\n!buyaddon "pirate\n!buyaddon "assassin\n!buyaddon "beggar\n!buyaddon "beggar\n!buyaddon "shaman\n!buyaddon "norseman\n!buyaddon "nightmare\n!buyaddon "jester\n!buyaddon "brotherhood\n!buyaddon "warmaster\n--Addon List End--' function onSay(cid, words, param) local player = Player(cid) local cfg = { ["citizen"] = { outfit = { male = 128, female = 136, addon = 3, storage = 10031 }, items = { {5878,100} } }, ["hunter"] = { outfit = { male = 129, female = 137, addon = 3, storage = 10032 }, items = { {5876, 100},{5948, 100} } }, ["mage"] = { outfit = { male = 130, female = 138, addon = 3, storage = 10033 }, items = { {2160,10} } }, ["knight"] = { outfit = { male = 131, female = 139, addon = 3, storage = 10034 }, items = { {5880,100},{5893, 100} } }, ["summoner"] = { outfit = { male = 133, female = 141, addon = 3, storage = 10035 }, items = { {2160,10} } }, ["warrior"] = { outfit = { male = 134, female = 142, addon = 3, storage = 10036 }, items = { {5925, 100},{5899, 100},{5919, 1},{5880, 100} } }, ["barbarian"] = { outfit = { male = 147, female = 143, addon = 3, storage = 10037 }, items = { {5911, 50},{5910, 50},{5879, 100} } }, ["druid"] = { outfit = { male = 148, female = 144, addon = 3, storage = 10038 }, items = { {5896, 50},{5897, 50} } }, ["wizard"] = { outfit = { male = 149, female = 145, addon = 3, storage = 10039 }, items = { {2536, 1},{2492, 1},{2488, 1},{2123, 1},{5922, 50} } }, ["oriental"] = { outfit = { male = 150, female = 146, addon = 3, storage = 10040 }, items = { {5883, 100},{5895, 100},{5912, 100} } }, ["pirate"] = { outfit = { male = 151, female = 155, addon = 3, storage = 10041 }, items = { {6098, 100},{6126, 100},{6097, 100} } }, ["assassin"] = { outfit = { male = 152, female = 156, addon = 3, storage = 10042 }, items = { {5898, 30},{5882, 10},{5881, 30},{5895, 20},{5905, 10} } }, ["beggar"] = { outfit = { male = 153, female = 157, addon = 3, storage = 10043 }, items = { {5878, 50},{2743, 30},{5913, 20},{5894, 10} } }, ["shaman"] = { outfit = { male = 154, female = 158, addon = 3, storage = 10044 }, items = { {3955,5},{5810, 5},{3966, 5},{3967, 5} } }, ["norseman"] = { outfit = { male = 251, female = 252, addon = 3, storage = 10045 }, items = { {7290,15} } }, ["nightmare"] = { outfit = { male = 268, female = 269, addon = 3, storage = 10046 }, items = { {6500,200} } }, ["jester"] = { outfit = { male = 273, female = 270, addon = 3, storage = 10047 }, items = { {2160, 25} } }, ["brotherhood"] = { outfit = { male = 278, female = 279, addon = 3, storage = 10048 }, items = { {6500,200} } } } local v, removeItems = cfg[param], 0, 0 if(param == "") then player:sendTextMessage(MESSAGE_INFO_DESCR, 'Please type !addon "outfit') player:showTextDialog( 5914, text) return false end if (v == nil) then player:sendTextMessage(MESSAGE_INFO_DESCR, "There is no such as outfit named "..param..", here is the list of available outfit.") player:showTextDialog(5914, text) return false end if(player:getStorageValue(v.outfit.storage) < 1) then for i = 1, #v.items do if(player:getItemCount(v.items[i][1]) >= v.items[i][2]) then removeItems = removeItems+1 end end if(removeItems == #v.items) then if(player:getSex(cid) == 1) then player:addOutfitAddon(v.outfit.male, v.outfit.addon) elseif(player:getSex(cid) == 0) then player:addOutfitAddon( v.outfit.female, v.outfit.addon) end for i = 1, #v.items do player:removeItem( v.items[i][1], v.items[i][2]) end player:sendTextMessage(MESSAGE_INFO_DESCR, "Enjoy your new addons to your "..param.." outfit!") player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) player:setStorageValue( v.outfit.storage, 1) else for i = 1, #v.items do player:sendTextMessage(MESSAGE_INFO_DESCR, "Tu necesitas " .. v.items[i][2] .. "x " .. ItemType(v.items[i][1]):getName() .. " para obtener el "..param.." addon.") end end else player:sendTextMessage(MESSAGE_INFO_DESCR, "Usted ya obtuvo el "..param..".") end return false end Créditos : david.
  10. Gostaria de um sistema nesse estilo: Ao upar para o level determinado abaixo, o player irá receber x itens, aparecerá uma mensagem em LARANJA no default e aqueles tipo de popup também. Upar level 20: Ganhar uma red backpack e dentro dela ter: 25 health potion, 25 mana potion, 30 fishs e Wand of Decay. Mensagem: Parabéns, você chegou ao nível 20! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra druid, em vez de receber Wand of Decay, receberá Necrotic Rod. *Pra paladin, em vez de receber Wand of Decay, receberá 5 Hunting Spears Upar level 25: Ganhar uma green backpack e dentro dela ter: Wand of Cosmic Energy e 20 blank runes. Mensagem: Parabéns, você chegou ao nível 25! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra druid, em vez de receber Wand of Cosmic Energy, receberá Terra Rod. *Pra paladin, em vez de receber Wand of Cosmic Energy e blank rune, receberá 5 Royal Spears e 20 bolts. Upar level 45: Ganhar uma yellow backpack e dentro dela ter: 10 sudden of death rune, 10 uh e 10k. Mensagem: Uau, chegou ao level 45, parabéns! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra paladin, em vez de receber sudden of death rune, receberá 5 Enchanted Spears. Se o player NÃO tiver cap, seus itens recebidos irão diretamente ao depot da cidade de origem dele e aparecerá uma mensagem: Parabéns, você chegou ao nível x! Você não tem cap suficiente, então, seus itens foram enviados para o depot! Servidor: 8.60
  11. Opa galera, queria saber se tem como fazer um sistema de karma estou com uma ideia de um ot que teria o lado ruim e bom... Gostaria de saber se exemplo daria para criar algo tipo assim matei injustamente fico com ponto negativo e vá para o lado ruim com 3 pontos exemplo e bom se matar um Pk exemplo... Seria para versão 8.6 se alguém puder ajudar ou até falar comigo em pm...
  12. antes de pedir tentei fazer ou apenas pegar de outros severs mais não consigo se alguem se quiser me ajudar ficarei grato .........sever base e poke flash e la o sistema de order e por icone e não da para dar mover no pokemon , obg.
  13. Fala ae galera, venho por meio deste tópico anunciar um novo poketibia, o Pokemon New. Informações do servidor(Pokemon New): *Sistema de nature dos pokemons 100% *Sistema daycare 100% *Mega evolução por talkaction 100% *Ditto system 100% *Smeargle system 100% *Kanto ,johto,hoen,sinnoh,unova,kalos 100% *Todos os pokemons e seus devidos respawn e megas 100% *Sistema de história das quests 100% *Sistema de pesca 100% *Sistema de daily 30% *Sistema de duel 90% *Sistema de torneios 100% *Golden arena 100% *Ícones 90% *Autoloot igual pxg 100% *Up 100% *Caugt 100% Download: http://www.mediafire.com/?p12w8kkzbwmn8cg Venha se divertir conosco
  14. Galera do XTibia, venho trazer um script bem simpleszinho mas que abre um leque de opções de RPG e diversão pro seu OT.. Trata-se do Mining System, um sistema que você pode utilizar a pick normal (ou uma outra pick especial) para minerar a terra e tentar conseguir items que você pode trocar por dinheiro ou items. São 70 leveis de Mining que vão upando conforme você minera. Enfim, vamos ao script: actions\scripts\mining.lua: Em terra, você coloca os ids dos chãos em que é possível minerar, levels é o level da skill e o ID do respectivo item que você fica capaz de conseguir após alcançar esse nível. Em outras palavras, no começo você só consegue minerar skull, no nv 70 você vai ter a chance de conseguir todos os items anteriores e não só life crystal. O restante das configurações está no meio do script: local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } o storage é onde vai salvar o seu nível chance é a chance de pegar um item cada vez que minera. k é a constante de level, o nivel 10 precisa de 10*10/k de experiencia para ser alcançado (com k sendo 2 dá 50 de experiencia), ou seja, com 50 picaretadas na terra vc pega nivel 10. experience é o storage que fica salvo sua experiencia. Bônus: Ao alcançar level 50 você ganha o Mining Helmet como prêmio, ele não faz nada de especial mas é como se fosse um troféu. No meu server tem uma série de troféus que voce pode colecionar e fica como sendo uma conquista épica para os players. e no actions.xml: <action itemid="2553" script="mining.lua"/> OBS: Sugiro que vcs utilizem uma outra pick pra não dar conflito mas você faz oque quiser. PS: Uma fotinha pra vcs verem Autor: WhiteWolf
  15. Train system V 1.0 Venho Aqui Trazer Esse System bem Legal Com script script você só precisa adicionar um AID (no trem), e apenas adicionar o costume ferroviário! Adicionar isso em actions.xml: <action itemid="7131" event="script" value="railbymock.lua" /><action itemid="7132" event="script" value="railbymock.lua" /> E em railbymock.lua adicione: --Script by mock the bear--Configlocal SPEED = 200local PLAYERSPEED = 250--Endlocal RAILS = {7121, 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130} --Thxy rails itemid by nord :Plocal CART = {[0] = 7132, [2] = 7132, [3] =7131, [1] =7131}local CONFIG = {[7121] = 0,[7122] = 0,[7123] = {EAST, SOUTH},[7124] = {WEST, SOUTH},[7125] = {EAST, NORTH},[7126] = {WEST, NORTH},[7127] = 0,[7128] = 0,[7129] = 0,[7130] = 0,--Random}local reverse = {[0] = 2, 3, 0, 1} -- All that table was made by nord.local function moveTrain(cid, frompos, direc)local tabif not isPlayer(cid) thenreturnendlocal pos = getCreaturePosition(cid)local rar = findRail(pos)if not rar thendoPlayerSetNoMove(cid, false)doRemoveCondition(cid, CONDITION_OUTFIT)doChangeSpeed(cid, -PLAYERSPEED)doMoveCreature(cid, direc)elsetab = CONFIG[rar]if tab and type(tab) == 'table' thendirec = tab[tab[1] == reverse[direc] and 2 or 1] -- by nord hereenddoSetItemOutfit(cid, CART[direc], -1)doMoveCreature(cid, direc)addEvent(moveTrain, SPEED, cid, pos,direc)endendfunction findRail(p)local p_ = {x=p.x, y=p.y, z=p.z}for i=0,10 dop_.stackpos = ilocal t = getTileThingByPos(p_)if isInArray(RAILS, t.itemid) thenreturn t.itemid,t.uidendendendfunction onUse(cid, item, frompos) --Script by mock the bearif hasCondition(cid, CONDITION_OUTFIT) or (item.actionid < 500 and item.actionid > 503) thenreturn falseenddoTeleportThing(cid, frompos, false)doPlayerSetNoMove(cid, true)doChangeSpeed(cid, PLAYERSPEED)addEvent(moveTrain, SPEED, cid, frompos, item.actionid-500)return trueend Creditos: Autor: Mock Testado em: TFS 0.3.6
  16. Galera do Xtibia To com um bug na minha GOback alguem ai pode me ajuda pfv
  17. homersapiens

    Diamond Shop

    Diamond Shop Para Instalar é bem fácil, extraia o arquivo game_shop.rar na pasta modules do OT Client(otc) Depois disso extraia esse arquivo shop.rar na pasta data/images Daí você pergunta: Ta mas e como funciona? Simples, por Talkactions, para configurar basta criar as talkactions no server. Para ficar mais fácil, tente criar as talkactions com as mesmas falas. /buyaddon -- para outfits !buy -- para vips #box# -- para box 4 !clan -- para clans Imagens: Só Postarei o Shop, os scripts são por sua conta! Algum Erro Poste no Tópico(Não atenderei dúvidas via pm/skype etc...) Créditos *Reps São Bem Vindos
  18. Galera vou ser bem objetivo no problema. Consegui montar a Yalahar Quest no server. E está funcionando normal, as waves, o sqm no void, só poder clicar 1x no globo, os portais fechando... O que não funcionou é que em certo momento o Azerus da sala DEVERIA ser removido, para entrar o Azerus1. Mas isso não funciona e ficam dois Azerus na sala. Bem como o clear da room também não funciona e os próximos a fazer já começam com bixos que sobraram. movements/scripts function onStepIn(cid, item, position, fromPosition)--Config-->local queststatus = getPlayerStorageValue(cid, 50001)--EndConfig--> if item.actionid == 1974 and queststatus == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "It seems by defeating Azerus you have stoped this army from entering your world! Better leave this ghastly place forever.") setPlayerStorageValue(cid, 4765, 1) return TRUEendif item.actionid == 1973 and queststatus == -1 then-- Here is the code start:starting={x = 480, y = 178, z = 7, stackpos = 253}checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}ending={x = 500, y = 199, z = 7, stackpos = 253}players=0totalmonsters=0monster = {}repeatcreature= getThingfromPos(checking) if creature.itemid > 0 then if getPlayerAccess(creature.uid) == 0 then players=players+1 end if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then totalmonsters=totalmonsters+1 monster[totalmonsters]=creature.uid end endchecking.x=checking.x+1 if checking.x>ending.x then checking.x=starting.x checking.y=checking.y+1 enduntil checking.y>ending.yif players==0 thentrash= {x = 470, y = 188, z = 7}current=0repeatcurrent=current+1doTeleportThing(monster[current],trash)until current>=totalmonstersend-- Here is the end of itdoTeleportThing(cid, player_pos_entrada)doSendMagicEffect(player_pos_entrada, 10)elsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You already done this quest!')endend action/scripts function onUse(cid, item, frompos, item2, topos) --Config-->local statue_pos = {x = 490, y = 188, z = 7}local new_portal_pos = {x = 490, y = 189, z = 7, stackpos = 1}local new_pos = {x = 542, y = 196, z = 5}local crystal_pos = {x = 490, y = 197, z = 7}--End Config--> function Potwoory1() doCreateMonster('Rift Brood', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwoory2, 7 * 700)end function Potwoory2() doCreateMonster('Rift Brood', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwory2, 30 * 1000)end function Potwoory3() removeFieldsTile() removeAzerusMonstersInArea() doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus1", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwory3, 35 * 1000)end function Potwoory4()removeFieldsTile() removeAzerusMonstersInArea() doCreateMonster('Azerus', {x = statue_pos.x, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253})end function NewPortal()doCreateTeleport(1387, new_pos, new_portal_pos)addEvent(RemoveAll, 30 * 1000)end function RemoveAll()doRemoveItem(getThingfromPos(new_portal_pos).uid,1)doItemSetAttribute(getTileItemById(crystal_pos, 7493).uid, "aid", 57500)end if item.aid == 57500 and getThingfromPos(new_portal_pos).itemid ~= 17668 thendoCreateItem(17668,1,new_portal_pos)addEvent(Potwoory1, 0)doItemSetAttribute(getTileItemById(crystal_pos, 7493).uid, "aid", 57501)elsedoPlayerSendTextMessage(cid,18,"Sorry, not possible.")endreturn TRUEend Agradeço quem puder ajudar.
  19. Vou usar esse script para que o player só passe pelo sqm se tiver todos storageid. Mas está montado da forma errada... function onStepIn(cid, item, pos)local position = {x = 830, y = 70, z = 7}local position2 = {x = 830, y = 69, z = 7}if (getPlayerStorageValue(cid, 10274, 10275, 10276, 10277, 10278, 10279, 10280) == 1 thendoTeleportThing(cid, position)doSendMagicEffect(position,10)elsedoTeleportThing(cid, position2)doSendMagicEffect(position2,10)endend
  20. Olá colegas, Estou fazendo o possível pra tirar apenas as dúvidas que eu não encontro forma de resolver e surgiu mais uma. Na Pits of Inferno tem uma parte que você precisa ter o The Holy Tible para passar pelo SQM X e ser transportado para SQM Y, caso não tenha o livro nada acontece. É esse script que desejo. 1. Para evitar spam, vou deixar outra dúvida aqui também. 2. Criei com ajuda do pessoal aqui do fórum um monstro que quando morre abre o portal para X local. Até ai tudo bem, mas o portal abre sempre onde o monstro morre, queria que ele abrisse em uma coordenada XYZ. local config = {message = "Take the Blue Tome, you have 60 seconds to leave! The room will collapse!",timeToRemove = 60, -- secondsteleportId = 1387,bosses = {["Raging Halcrof"] = {teleportPos = {x = 1071, y = 1124, z = 10, stackpos = 1}, toPos = {x = 1066, y = 1125, z = 6}}}}local function removal(position)doRemoveThing(getTileItemById(position, config.teleportId).uid, 1)return TRUEendfunction onDeath(cid, corpse, killer)registerCreatureEvent(cid, "halcrofteleport")local position = getCreaturePosition(cid)for name, pos in pairs(config.bosses) doif name == getCreatureName(cid) thenteleport = doCreateTeleport(config.teleportId, pos, position)doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1)addEvent(removal, config.timeToRemove * 1000, position)doSendMagicEffect(position,10)endendreturn TRUEend Esse é o script que estou usando mas não está funcionando. Ele abre o portal no corpo do monstro e não está enviando o player para posição desejada. 3. Esse é um NPC que o jogador vai desafiar se tiver lvl 100+ pode aceitar, então é movido para sala. Onde luta com o boss e se o player morrer pode tentar novamente, mas se conseguir eu queria criar um storageid onde o npc checasse se o player já derrotou o boss e se sim, não pode fazer de novo. local tab = { level = 100, pos = {x = 1071, y = 1135, z = 10}}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if (msgcontains(msg, 'challenge')) then talkState[talkUser] = 1 selfSay('You are sure you want to go? You can not return.', cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerLevel(cid) <= tab.level) then talkState[talkUser] = 0 doTeleportThing(cid, tab.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) else talkState[talkUser] = 0 selfSay('I can only challenge players with level '..tab.level..' or less.', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then talkState[talkUser] = 0 selfSay('Come back when you are ready learner.', cid) end return trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Agradeço desde já galera.
  21. Instalando 1. Abra sua pagina characters.php 2. Substitua por: Créditos: Kernox - criador original do script
  22. Iae galera ... Queria saber se existiria a possibilidade de vcs disponibilizarem um script que funcionasse com storage. No caso seria um outfits e uma spells por storage. Se tiver como, agradeço desde de ja ! =D
  23. Bom galera antes de vir postar este sistema já tentei de varias formas incluir isso ao meu servidor mais sempre tive problemas e não tinha sucesso com o sistema, porém um dia consegui adicionar utilizando de um tutorial postado aqui no fórum, o problema foi que esse sistema existe um BUG no qual do nada um player que fez uma doação de 10,00 reais estava com 1000 premium points na sua acc. Fui em busca de soluções encontrei uma com um amigo meu programador de PHP, Joffily Ferreira e vou postar pra vocês porque acho justo todos usufruir do que é bom. Vamos la deixa de bla bla e vamos ao que interessa... Crie um arquivo .php chamado de retpagseguro, insira dentro do mesmo os code a seguir: OBS: Este arquivo deve fica localizado na pasta htdocs ou www <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "senhadb"; /* PASSWORD */ $db = "nomedb"; /* DB */ $retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro ############################################################## # CONFIGURAÇÕES ############################################################## if (empty($_POST['Referencia'])) { header("Location http://pagseguro.com.br"); } list($accname, $world) = explode('-', $_POST['Referencia']); if ($world=='sv') { $retorno_host = "$host"; // Local da base de dados MySql $retorno_database = "$db"; // Nome da base de dados MySql $retorno_usuario = "$user"; // Usuario com acesso a base de dados MySql $retorno_senha = "$passwd"; // Senha de acesso a base de dados MySql } ############################################################### # NÃO ALTERE DESTA LINHA PARA BAIXOs# $lnk = mysql_connect("$host", "$user", "$passwd") or die ('Nao foi possível conectar ao MySql: ' . mysql_error()); mysql_select_db("$db", $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error()); // Validando dados no PagSeguro $PagSeguro = 'Comando=validar'; $PagSeguro .= '&Token=' . $retorno_token; $Cabecalho = "Retorno PagSeguro"; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; } if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) { $fsocket = true; } if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); $resp = curl_exec($ch); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; break; } } fclose ($fp); } else { echo "$errstr ($errno)<br />\n"; } } if ($confirma) { ## Recebendo Dados ## $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = intval($_POST['ProdValor_1']); $ProdQuantidade_x = $POST['ProdQuantidade_1']; # GRAVA OS DADOS NO BANCO DE DADOS # mysql_query("INSERT into PagSeguroTransacoes SET TransacaoID='$TransacaoID', VendedorEmail='$VendedorEmail', Referencia='$Referencia', TipoFrete='$TipoFrete', ValorFrete='$ValorFrete', Extras='$Extras', Anotacao='$accname', TipoPagamento='$TipoPagamento', StatusTransacao='$StatusTransacao', CliNome='$CliNome', CliEmail='$CliEmail', CliEndereco='$CliEndereco', CliNumero='$CliNumero', CliComplemento='$CliComplemento', CliBairro='$CliBairro', CliCidade='$CliCidade', CliEstado='$CliEstado', CliCEP='$CliCEP', CliTelefone='$CliTelefone', NumItens='$NumItens', Data=now(), ProdQuantidade_x='$ProdQuantidade_x';"); if ($StatusTransacao == "Aprovado") { mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `PagSeguroTransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `PagSeguroTransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;"); mysql_query('OPTIMIZE TABLE `pagsegurotransacoes`'); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Donate Server</title> <style type="text/css"> body { font-family: Tahoma, Geneva, sans-serif; font-size: 16px; width: 900px; margin: 0px auto; margin-top: 30px; } b { font-size: 18px; font-weight: bold; } </style> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td width="11%" align="center" valign="middle"><img src="images/true.png" height="auto" width="64" /></td> <td width="89%"><p><b>S</b>ua compra está sendo processada por nossos sistemas de apuração, dentro de no máximo <u>1 hora seus pontos serão creditados</u>, caso o pagamento não for efetuado, ficará em aberto 1 ou mais pagamentos pendentes em sua conta. Caso você tenha mais de 3 pagamentos pendentes por falta de pagamento, sua conta será bloqueada temporariamente para efetuar pagamentos.</p></td> </tr> </table> <!--p><b>ID de Transação:</b> <?php echo $_POST['TransacaoID']; ?></p--> </body> </html> No arquivo acima você vai alterar as seguintes linhas: $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "senhadb"; /* PASSWORD */ $db = "nomedb"; /* DB */ $retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro Gere sua token no PagSeguro com este link e ative o link do retorno ao seu site veja na imagem abaixo um exemplo: Certo agora crie um arquivo .php com o nome doacao e insira no mesmo os codes abaixo: OBS: Quem utiliza gesior 2012 bota na pasta pages ou quem utiliza gesior anteriores fica na pasta htdocs ou www. <?php if(!$logged) if($action == "logout") $main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>'; else $main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>'; else { $main_content .= '<table width="100%" border="0" cellpadding="4" cellspacing="1"> <tbody><tr> <td class="white" colspan="3" bgcolor="#505050"><span class="style4">Detalhes da bonificação de Points.</span></td> </tr> <tr bgcolor="#f1e0c6"><td width="35%"><b>Doação</b></td><td width="35%"><b>Points</b></td></tr> <tr bgcolor="#d4c0a1"><td>R$5,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 5 Points</td></tr> <tr bgcolor="#f1e0c6"><td>R$10,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 10 Points</td></tr> <tr bgcolor="#d4c0a1"><td>R$20,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 20 Points</td></tr> <tr bgcolor="#f1e0c6"><td>R$40,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 40 Points</td></tr> <tr bgcolor="#d4c0a1"><td>R$60,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 60 Points</td></tr> <tr bgcolor="#f1e0c6"><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center></td></tr> </tbody></table></br> '; $main_content .= ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'"> <table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody> <tr bgcolor="#505050" class="white"> <th colspan="2"><strong>Escolha a quantidade de pontos que deseja DONATAR.</strong></th> </tr> <tr bgcolor="#d4c0a1"> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr bgcolor="#d4c0a1"> <td width="10%">Pontos</td> <td> <input type="number" ng-model="get_points" min="1" size="5" maxlength="5"> <input name="item_valor_1" type="hidden" value="{{get_points * 100}}" size="5" maxlength="5"> <input name="item_quant_1" type="hidden" value="1" size="1" maxlength="1"> </td> </tr> <tr bgcolor="#d4c0a1"> <td colspan="2"> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" /> </td> </tr> </tbody></table></form> <b><span style="color:#ff0000;">OBS:</span></b> Os pontos são entregues <b>automáticamente</b> logo após a <u>aprovação</u> do seu pagamento pelo PagSeguro, ou seja, pagou e foi aprovado pontos depositados. <?php } ?>'; } ?> Agora abra o arquivo config.php e adicione os codes abaixo: #PAGSEGURO SISTEMA AUTOMATICO $config['pagseguro']['email'] = '[email protected]<script cf-hash='f9e31' type="text/javascript"> /* */</script>'; //E-mail da sua conta PagSeguro $config['pagseguro']['produtoNome'] = 'Premium Points'; //Identificação do Pontos $config['pagseguro']['produtoValor'] = '100'; //100 = R$ 1,00 - 250 = R$ 2,50 Vamos em layout.php nas primeiras linhas terá a tag abrindo html, exemplo: <html> Troque por: <html ng-app> Ou se tiver assim: <html xmlns="http://www.w3.org/1999/xhtml"> Troque por: <html xmlns="http://www.w3.org/1999/xhtml" ng-app> Mais abaixo juntos aos codes de JS adicione: <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script> Agora vamos na database e adicione a seguinte tabela: CREATE TABLE IF NOT EXISTS `PagSeguroTransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) DEFAULT NULL, `TipoFrete` char(2) DEFAULT NULL, `ValorFrete` decimal(10,2) DEFAULT NULL, `Extras` decimal(10,2) DEFAULT NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) DEFAULT NULL, `CliComplemento` varchar(100) DEFAULT NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) DEFAULT NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `ProdQuantidade_x` int(5) NOT NULL, `status` tinyint(1) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Beleza se tiver feito tudo OK naturalmente seu sistema está funcionando perfeitamente. Haaaa, quem quiser que o sistema entregue DOUBLE POINTS vou ensinar abaixo, eu particularmente estou com essa promoção no meu OT.... No arquivo retpagseguro.php procure por: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); Troque por: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' * 2 WHERE name = '".htmlspecialchars($accname)."'"); Bom a única mudança ai foi a multiplicação dos pontos totais incluindo * 2. Caso o seu tenha algum erro provavelmente vai ser gerado pelo layout.php se você não encontrar a formula correta então aconselho utilizar gesior 2012. Créditos: Tatu Hunter Joffily Ferreira (Ajustar o sistema) E as demais variadas participações incluindo a minha
  24. Visto que agora e aonda do tfs 1.2 vou trazer umas paradas do forum gringo. E como não vi no forum, acho que e bizu. Addon doll e Mount Doll por Modal Window... é fácil e simples. Primeiro vamos precisar instalar o modal window. va em data/lib/lib.lua e adiciona: dofile('data/lib/modalwindow.lua') Depois na pasta data/Lib crie um arquivo chamado modalwindow e adiciona esse code. Agora em data/creaturescripts/creaturescripts.xml Add a tag. <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Agora crie um arquivo chamado modalwindowhelper. e add o code nele. Pronto a parte da janela esta feita, agora vamos ao Addon em actions.xml add. <action itemid="ITEMID" script="addon_doll.lua"/> em item id coloque o id que desejar, depois disso crie um arquivo chamado de addon_doll.lua e add. em global.lua add dofile('data/lib/addon_doll.lua') para finalizar cria um arquivo em /data/lib/ com o nome de addon_doll.lua e add o code. Pronto Addon Doll Finalizado vamos ao Mount.... No arquivo /data/actions/actions.xml add. <action itemid="ITEMID" script="mount_doll.lua"/> Agora em /data/actions/scripts crie um arquivo com o nome mount_doll.lua e add. Agora no arquivo data/global.xml add. dofile('data/lib/mount_doll.lua') agora em /data/lib/ crie um arquivo com o nome "mount_doll.lua" e add. Pronto codigo finalizado. Espero que seja útil, lembrando não foi eu quem fiz, mais qualquer duvida e so falar que tento ajudar. foi o membro Strutz de um fórum gringo. Créditos todo dele.
  25. Oi. Vim trazer esse sistema postado por nosso amigo zbizu da comunidade otland. Se não sabe como funciona, veja o exemplo abaixo. Espero que seja útil! 07:39 You see a mastermind shield (Def:37). It weighs 57.00 oz. [shield.+5%] [mp.+10%] [melee.+2%] 07:40 You see a crossbow (Range:5). It weighs 40.00 oz. [shield.+2%] [mp.+14%] [hp.+4%] SLOT SYSTEM global.lua function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end function isShield(uid) return getItemWeaponType(uid) == 4 end function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end actions.xml <action itemid="8300" script="slot.lua"/> slot.lua action local conf = {maxSlotCount=3,ignoredIds={}}function choose(...) local arg = {...} return arg[math.random(1,#arg)]endfunction onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or isItemStackable(itemEx.uid) or itemEx.itemid == 0 or itemEx.type > 1 or not(isArmor(itemEx.uid) or isWeapon(itemEx.uid) or isShield(itemEx.uid)) then return false end if isCreature(itemEx.uid) then return false end local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end if getSlotCount(nam) < conf.maxSlotCount then local l = choose('hp','mp','ml','melee','shield','dist') local p = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..l..'.+'..p..'%]' doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,l..'.+'..p..'%') doSetItemSpecialDescription(itemEx.uid, nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Slot limit reached.") end return trueend creaturescripts.xml <event type="login" name="SlotLogin" script="slot.lua"/> slot.lua creaturescripts local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}for i=1,300 do conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50) setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i) conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51) setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i) conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52) setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i) conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53) setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i) conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54) setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i) conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55) setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)endfunction getSlotType(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n:match('(.-)%.([+-])(%d+)%%') end else return false endendlocal function loadSet(cid)local player = Player(cid)if not player then return false end local t = {} for slot=1,9 do t[slot] = '' local s = getPlayerSlotItem(player,slot).uid if s ~= 0 then t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) end end return tendfunction chk(cid,f) if not Player(cid) then return false end local t = loadSet(cid) if not t then return false end for i=1,#f do if f[i] ~= t[i] then equip(player,nil,slot) break end end addEvent(chk,2000,cid,t)endfunction check_slot(aab, i) if i == 5 or i == 6 then if isWeapon(aab) or isShield(aab) or isBow(aab) then return true end else return true endreturn falseendfunction equip(player,item,slot) local t = {} if item then local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) t[mm] = tonumber(qto) end for i=1,9 do if i ~= slot then if getPlayerSlotItem(player,i).itemid ~= 0 then local aab = getPlayerSlotItem(player,i).uid if aab and check_slot(aab,i) then for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do local mm,sinal,qto2 = getSlotType(_) if mm then if not t[mm] then t[mm] = 0 end t[mm] = t[mm]+tonumber(qto2) t[mm] = t[mm] > 300 and 300 or t[mm] end end end end end end local fu = 0 local ca = {} local s = '' for sl,n in pairs(t) do fu = fu+1 s = s..''..n..'% more of '..sl..'\n' if sl == 'hp' then player:addCondition(conditionHP[tonumber(n)]) ca[50] = 1 doSendTutorial(player,19) elseif sl == 'mp' then player:addCondition(conditionMP[tonumber(n)]) ca[51] = 1 doSendTutorial(player,19) elseif sl == 'ml' then player:addCondition(conditionML[tonumber(n)]) ca[52] = 1 elseif sl == 'melee' then player:addCondition(conditionCLUB[tonumber(n)]) ca[53] = 1 elseif sl == 'shield' then player:addCondition(conditionSHI[tonumber(n)]) ca[54] = 1 elseif sl == 'dist' then player:addCondition(conditionDIST[tonumber(n)]) ca[55] = 1 end end if fu > 0 then for i=50,55 do if not ca[i] then doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end else for i=50,55 do doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end return trueendfunction onLogin(player) equip(player,nil,slot)local cid = player:getId() addEvent(chk,2000,cid,loadSet(cid)) return trueend SLOT REMOVER actions.xml <action itemid="8299" script="slotremove.lua"/> slotremove.lua function getSlotType_full(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n end else return false endendfunction onUse(cid, item, fromPosition, itemEx, toPosition)item_slots_a = 0item_slots_n = ""item_slots_t = {} for _ in Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do item_slots_a = item_slots_a + 1 item_slots_t[item_slots_a] = getSlotType_full(_) end if item_slots_t[1] == nil then return false end for i = 1, #item_slots_t - 1 do item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]" end doRemoveItem(item.uid,1) doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED) doSetItemSpecialDescription(itemEx.uid, item_slots_n) doPlayerSendTextMessage(cid,20,"Attribute removed.")return trueend
×
×
  • Criar Novo...