Pesquisar na Comunidade
Mostrando resultados para as tags ''script''.
Encontrado 21125 registros
-
action Sistema: Casino Slots [Cassino]
um tópico no fórum postou gonorreiaswat Mods, funções e outros
Bom dia turma do Xtibia. Venho trazer um script que fiz para um usuário de outro fórum, abaixo seguem maiores informações sobre. Introdução: Bom, este script simula a máquina de Cassino conhecida como Cassino Slots, pra quem não conhece é a máquina que se encontra no spoiler abaixo: Como funciona? O jogador precisa escolher 1 (um) dos 10 (dez) itens disponíveis (da para configurar a quantidade de itens) como seu Item da Sorte, e após feito isso, terá que girar a alavanca e torcer para que a máquina sorteie 3 itens repetidos igual ao que o jogador em questão escolheu. Para tornar um pouco mais fácil de vencer, criei para que a máquina dê pequenos brindes à quem acertar 1 ou 2 itens dos sorteados (configurável). Como jogar? Para jogar é simples, como desenvolvi todo script em apenas um arquivo, para facilitar na criação, na instalação e até mesmo na jogabilidade, o jogo se baseia na posição em que o jogador está para identificar qual ação executar. Selecionar Item da Sorte: com seu personagem virado para baixo (sul), clique na alavanca e automaticamente o item da sorte aparecerá na mesa configurada no script, caso queira outro item, basta ir usando a alavanca até encontrar o item desejado. Como Jogar: Após ter selecionado seu item da sorte, que deve estar à mostra em cima da mesa própria, basta virar seu personagem para cima (norte) e clicar novamente na alavanca. E se virar esquerda ou direita?: Nada acontecerá, apenas uma mensagem ensinando como jogar será enviada para que o jogador se oriente. Dicas de instalação! Sugiro que quando for criar o mapa para o evento, não faça como do vídeo, pois os itens criados nas mesas não estão com atributos para que não possam ser movidos, sendo assim é provável que jogadores de má fé venham a roubar itens... Faça como a imagem abaixo: Instalando: Basta criar um arquivo na pasta “data/actions/scripts” chamado “cassino_slots.lua” e adicionar o código abaixo dentro: Agora em “actions.xml” adicione a tag abaixo: Agora basta configurar de acordo com as informações disponíveis no início do script. Vejam o vídeo demonstrativo do Sistema em funcionamento. Criado por: Adriano Swatt' -
Sistema que adiciona um Rank Militar de acordo com os Frags do jogador. Ou seja, quanto mais o player mata, maior será o seu rank. Achei muito legal, pois dá um ar de disputa por patentes dentro do servidor. Para instalar crie um arquivo dentro da pasta mods do seu servidor como o nome militarrank.xml e cole este script dentro. <?xml version = "1.0" encoding = "UTF-8"?> <mod name = "Military Ranks" version = "1.0" author = "Teckman" enabled = "yes"> <config name = "ranks"><![CDATA[ titles = { [1] = "Private First Class", [3] = "Specialista", [5] = "Corporal", [10] = "Sargento", [12] = "Staff Sargento", [15] = "Sargento Primeiro", [20] = "Master Sargento", [22] = "Primeriro Sargento", [25] = "Sargent Major", [30] = "Sargento Major Comando", [35] = "Sargento Major Exercito", [38] = "Segundo Tenente", [40] = "Primeiro Tenente", [45] = "Capitão", [48] = "Major", [50] = "Tenente Coronel", [55] = "Coronel", [100] = "General de Brigada", [110] = "General de Divisão", [120] = "Tenente General", [140] = "General", [170] = "General de Exercito" } fragsStorage = 600 ]]></config> <event type = "look" name = "ranksLook" event = "script"><![CDATA[ domodlib("ranks") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then local rank = {rank = "Private", frags = 0} for k, v in pairs(titles) do if(math.max(0, getPlayerStorageValue(thing.uid, fragsStorage)) > k - 1) then if(k - 1 > rank.frags) then rank.rank, rank.frags = v, k - 1 end end end doPlayerSetSpecialDescription(thing.uid, "\n Military rank: " .. rank.rank) end return true end ]]></event> <event type = "kill" name = "ranksKill" event = "script"><![CDATA[ domodlib("ranks") function onKill(cid, target) if(isPlayer(target)) then setPlayerStorageValue(cid, fragsStorage, math.max(0, getPlayerStorageValue(cid, fragsStorage) + 1)) if(titles[getPlayerStorageValue(cid, fragsStorage)]) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You advanced to military rank: " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. ". Congratulations " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. "!") end end return true end ]]></event> <event type = "login" name = "ranksLogin" event = "script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "ranksKill") registerCreatureEvent(cid, "ranksLook") return true end ]]></event> </mod> Gostou? Espero que sim!. credito: Roque
- 2 respostas
-
- militar rank
- creature event
- (e 3 mais)
-
Styller Yourots 8.60 Original (PLATINUM) RPG (Compilado para Linux e para Windows) Mapa Base: Yourots 1.2 Editado por Leonardo. Informações: Versão 0.6 17/07/09 -Novo Visual do Templo. -95% a City 8.50 -Novas Quest\\\'s -Depot com novo Visual -SD igual a do Global. -Novos Monstros do 8.5 com respawn. -Novas Houses -Addons Funcionando. -Married Outfit -Firewalker Boots 100%. -Adicionada Itens 8.50 100%. -GOD 100%. -Adicionado Change Log -Soft Boots Funfando -Dual Hit -Npc System 100%.. -Questdoors. -Novas areas de Hunt -Respawn de Medusa Adicioando. -Demon Oak Quest 100%. -Guardian Halberd Quest. -Algumas Casas com novas Paredes. -Novo Outfit (KinG). -Inquisition 100% -Melhorei o Respawn de Bog Raider da Hydras -Sem o bug dos Grim Reapers -Npc Bless 100% -Novas Magias 8.5 -Sem o Icone de Pz e da Red Sword (por enquanto) -Ferumbras Tower (Igual a do Global) Agora Completada e com caminho para ir até ela. -Agora a Sudden Death (SD) após dar seu hit deixa um elemento de Morte tirando \\\"50\\\" -Remodelei o Amazon Camp. -Agora o Player pode recarregar sua Soft Boots e Firewalker Boots, clicando na \\\"Worn\\\" -Area de Vampiros. -Area de Infernalist. -Seais da Poi igual ao Tibia Global. -Novas Paredes. -Quest Firewalker Boots para quem fizer Demon Helmet Quest. (By Leo) -Nova Runa do tibia Global (Wild Growth). -Mais casas na cidade. -Mais pvp influenciando player jogar o Servidor. -Novo Visual do Temple. -Agora o Player ao soltar uma magia de Buff é adicionado Status. -Mais Estabilidade do Server. -Auto-clean de 2 em 2hrs. -Adicionado respawn de Faraó em Nargor. -Adicionado Great Shield Quest. -Novo respawn de Behemoth em Nargor. -Adicionado Yalahar City Full -Adicionado o Captain Eddy para levar o player à Yalahar. -Agora os players podem comprar BPS de PoTIonS e RuNAS por meio do "Buy with backpacks" no npc Dark Rodo! -Helmet of The Ancients Quest (HOTA) -Adicionado a Quest da Obsidian Knife -Adicionado o sistema de !ranks sem bug! --Melhorei a Arquitetura da Cidade. -Agora o player pode usar a enchated small ruby no Helmet of the Ancients (By LeozeraRox 100%) -Adicionado o NPC Bank sem bugs. -Foi retirado alguns Bugs. Rev 02 6/08/09 -Novo Visual do Templo. -98% a City 8.50 -Alavanca de Bp de Potions 100% -Adicionado Justice Seeker Quest -Depot com novo Visual -Sem o Bug dos Grim Reaper. -Novas Hydras. -Novos Frost Dragons, agora maior. -Adicionado o Icone de Protection Zone. -Adicionado a Black Skull -Nova Worn Soft Boots. -Nova Worn Firewalker Boots. -Loot Mensagem 100%. -Agora após o player criar o character no Acc Manager ele recebe os itens da sua Vocação. -Adicionado o Dark Cemiter (Nightstaker,Lich,Necromancer) -Adicionado uma Igreja mais por inquanto sem Casamento -Melhorei o sul da Cidade.. -Visual da City muito Bonito. -Novos demons. -Arena PvP 100%. -Loot do hellspawn agora igual do do Tibia Global. -Mais Estabilidade. -Mais Casas. -Retirei o "lixo" do mapa, pois pesava bastante os OT Servers. -!rank agora atualiza de 5 em 5min. -O preço da Yalahi Armor subiu para 600k -Melhorei o Respawn de Bog Raider da Hydras -Adicionei uma cave de Giant Spider e Hydra na Hydra Land. -Npc Bless 100% e agora mais completo. -NPC Bank sem bugs. -Adicionei o comando /ban -Bar para se diverir com amigos. -Nova Magia pra Royal Paladins "exevo con san" -Arrumado o Exhausted. -Rust Remover System -Para quem não quiser black skull basta por "no" no conf.lua >> " useBlackSkull = "yes" " -Agora o Npc Betoven não leva pro temple e sim para o Barco. -Foi retirado alguns Bugs. Rev 03 9/08/09 -Depot Com visual 8.50. -Arrumado o Bug do Outfit -Novo Exe. -Agora A Riona vende Rusty Remover. -Novo visual do cemitério -Adicionado o Married Outfit. -Removi Yalahar, pois era uma cidade inútil no servidor e servia só para pesar o server. -Hellgorak com loot igual do Tibia Global. -Mais estabilidade do que antes. -Retirado todas as camas por enquanto, pois quando o player dormia o server caia. -Foi retirado alguns Bugs. Rev 04 13/08/09 -Novo Distro. -Arrumado o Bug das camas. -Camas em todas as Casas. -Agora nem na Inquisition e nem na Demon Oak os players podem pegar os itens da amostra. (Obrigado usuários) -Clean não trava o server. -Server não cai mais, por erros. -Agora temos !notice. -Para banir Ctrl+Y -Todos itens 8.50 com seus nomes. -Mais estabilidade no servidor do que antes. -Foi retirado alguns Bugs. New Version 0.6.1 20/09/09 -Cave de Rotwoms reformulada. -Cave de Demos Reformulada. -Magias agora mais reais (sem aquelas exageradas). -Agora a Inquisition possui mais uma Sala. -Parte da Poi foi reformulada. -Adicionado o NPC Raphael, que vende buffer por 20min (nada exagerado) para os players. -Agora um cadeia para os players infratores. -Para Prender um player /jail "tempo,nome do player (apenas GMs e GODs) -Agora o player pode chamar players para quest através do comando- !service Pits of Inferno Quest, 5000 (o 5000 é o preço para os interessados). -Player agora pode trocar 200 demonic essences por um Nighmare ou Necromancer Shield (!necromancer-!nightmare). -Premia City toda Reformulada e com mais um hunt de Demons. -Adicionado os NPCs na Blue City. -Temos agora um Broadcast para dar informações aos players. -Adicionado um Hunt de Medusa e Defiler na Pits Prison. -Adicionado Demona na Hunt de Warlock. -Cave de Warlock toda reformulada. -Adicionado quest do noble axe nos Cyclops. -Adicionado um cave de Wyrms. -Pequenas edições no Temple. -Agora o Demon Oak sumona um Demodras no Lugar do Necropharus. -Foi retirado alguns Bugs. Rev 01 (0.6.1) 10/10/09 -Edições na pasta creaturescripts. -Bug do player não morrer arrumado. -Arrumado os Bugs da Premia City. -Novo Exe. foi adicionado e agora serve para Tibia 8.50 e 8.52. -Agora ficou mais dificiu derrubar o server e acho que impossivel. -Adicionado o NPC Hagar no temple, para dar boas vindas. -Bug do utito tempo san arrumado. -Bugs foram retirados. Rev 02 (0.6.1) 28/10/09 -Novo Exe. -Agora 100% Estável, devido aos vários testes. -Adicionado o NPC Aldo para recarregar a Soft Boots, segundo os players são mais RPG. -Ediçoes no mapa. -Edições no NPC Henricus. -Bugs foram retirados. Rev 03 (0.6.1) 31/10/09 -Retirado o NPC de recarregar a Soft Boots. -Permaneceu o Antigo jeito de recarregar. -Edições na Inquisition. -Bug da Arena PVP Arrumado. -Bug do NPC Henricus arrumado. -Adicionado a Quest do Blessed Shield na Fermbras Tower, onde o player escolhe apenas um Item. -Bugs foram retirados. Rev 04 (0.6.1) 02/11/09 -Novo Exe. -Mudei o Acc Manager de Lugar. -Adicionei o Npc Aldo (Recarrega Soft Boots). -Systema de Tapete Voador. -Systema de Jumper. -Uma atividade básica de mapping na cidade. -Systema de VIP: (Utilizando Database. Para mais informações: /vip) -Expandi 3 novas Hunts à Leste da Cidade. -Adicionei a Serpent Coat Quest. -Raid do The Mutated Pumkin ( /raid The Mutated Pumpkin ) -Nova Hunt de Frost Dragon na V.I.P City. -Nova Cidade Criada "Tiquanda Island" -Adicionei Systema de Refinamento para V.I.Ps. (Sem exagero) -Algumas Edições na POI. -Adicionei um Npc que leva o Player a Svargrond -Adicionei Arena Quest (greenshore - scrapper - warlord) 100% Igual ao Tibia Global. -Melhorei a Performaçe do Demon Oak. -Agora na Arena-PVP o player não perde item e nem level. -Nova Entrada para a Blood Land. -Um sistema de Invasão que o Boss invasor causa um incêndio nas Florestas de Nargor. -Adicionei a Quest da Giant Sword. -Sistema de Poll: (Via Database). *!createpoll PERGUNTA? *!activatepoll ID *!cancelpoll *!seepoll *!seeresults ID *!remvotes ID *!rempoll ID *!votepoll Option - Quando uma enquete está ativa, esse é o comando que os jogadores irão utilizar para votar na opção desejada. O número de opções pode variar. -Sistema de Afk (!afk on - !afk off). -Agora os Lideres de Guild podem mandar uma mensagem em Vermelho para os Membros. ( /guild ). -O membro de uma guild pode escolher ser atacado ou não por um outro membro de uma guild. ( /attackguild on - /attackguild off ) -Married System 100% (Via Database) *Como Casar: PLAYER1: Hi PLAYER1: marry PLAYER1: yes PLAYER1: Nome do PLayer 2 PLAYER2: Hi PLAYER2: marry PLAYER2: yes PLAYER2: proceed Os casais também podem se separar. -Adicionei o NPC Morgan em Blood City (Vende e compra Anéis) -Algumas Edições no Spells.xml -Colocamos um Sistema de quando a V.I.P do Player acabar, ele ser teleportado para a Cidade Principal. -Criei um Hunt de Destroyer e Demon. -Adicionei o Npc Old Jeff que vende outros tipos de Munição. -Bugs Foram Retirados. Versão de Reveillon (0.6.5) 16/12/09 -Novo Exe. -Mudei o Acc Manager. -Protocolo 8.54 -Outfits e Addons 8.54 (Warmaster) -95% dos Itens já foram Adicionados. -90% features -/unban funcionando 100% -Addons do Warmaster sendo vendido no Varkhal. -Adicionei a Magia "exana flam" -Agora o player começa com a "expedition backpack" -Suporte Para Mapas 8.54. -Bugs Foram Retirados. Versão de Retomada (0.7.0) 24/04/10 -Novo Distro totalmente estável. (LeozeraRox) -Proteção contra MageBomb. -Protocolo 8.54-8.55 -Lugares de Caça para todos os monstros 8.54 -Mais de 10 Quest dos novos itens foram adicionadas. -99% features. -Regularição das Spells. -Bank system via talkaction adicionado. -Comando para adiquirir bless igual a do global adicionado "!bless" -Novas Backpacks sendo vendidas na Riona. -Cidade toda reformulada. -Npc "A Ghostly Sage" para aquisição da permição para Pits Of Inferno. -Pits of Inferno mais similar ao do Tibia Global. -Nova Hunt de Infernalist adicionada. -Novo local da Igreja. -Adicionado o NPC Erisk (vendedor de alguns itens 8.54 para quem fez Pits of Inferno) -Adicionado Nightmare Doll quest. -Bugs Foram Retirados... (account manager - instabilidade). Versão de Retomada (0.7.0) Rev 01 08/05/10 -Novo Distro totalmente estável. (LeozeraRox) -Sem bug do Deathlist (foi retirado por segurança). -Novo andar na Trainer Room. -Sem bug que dava crash no Server. -Algumas Mudanças. -Bugs Foram Retirados... Versão de Retomada (0.7.2) Rev 02 15/05/10 -Novo Distro 8.54/8.55/8.56/8.57. (LeozeraRox- Techloko) -Bug dos protocolos arrumados. -Algumas Mudanças. -Bugs Foram Retirados... Versão 0.7.5 30/07/10 -Novo Distro 8.60. (LeozeraRox - Robson) -Potions em Cargas sem Bugs. -Runas em Cargas sem Bugs. -Itens 8.60 Adicionados. -Monstros 8.60 Adicionados. -Itens 8.54/8.60 sendo vendidos no Npc Esrik após completar Missão. -Novo Outfit e Addons Wayfarer. -Estabilidade. -Itens 8.60 com suas funções em perfeito funcionamento. -Bugs Foram Retirados... Versão 0.7.5 Rev 01 31/07/10 -Novo Distro. (LeozeraRox - Robson) -Sem bug das Houses. -Edições no Itens.xml. -Pequenas mudanças em Nargor. -Edições na Pasta Monsters. Versão 0.7.5 Rev 02 31/07/10 -Bug das Runas Arrumado. -Edições no Itens.xml. -Jogabilidade 100% Nova Versão (0.7.5) Rev 03 12/07/11 -Adicionado o Npc Jonny ano Norte de Blood City. -Todas as Magias do Tibia 8.70. -Agora o refinador é vendido no NPC Dufi. -Alavancas agora vendem cargas nas Bps. -Bugs Foram Retirados... Nova Versão (0.7.5) Rev 04 17/07/11 -Adicionado Frag System. -Hagar agora é útil no servidor. -Quando o player é assassinado ele perde seu coração -Alguns npcs foram mudados de lugar. -A Jogabilidade foi melhorada... Versão Definitiva (0.8) 20/12/11 -Adicionado VIP Vocation. -Completamente Sem Bugs. -Novo Distro. -Suporte Para War System -Adicionado !stamina. -Boas mudanças na Cidade Principal. -Bug de Runas e Potions corrigidos. -Trainers Modificados. -Novas Hunts, tanto VIP quanto Free. -Balanceamento de Vocações. -Adicionado a Light City para adquirir os itens de Addon. -Corrigido o Ex-Key Ring. -Sem Bug da Soya e Dark Rodo -Adicionada Darashia, totalmente Full. -Ferumbras, Ghazbaran e Morgaroth com seus Loots 100% iguais ao Tibia Global. -POI ficou mais Real. -Melhorou a Estabilidade. -Adicionada Novas Quests. -Adicionado o Addon Doll, (Ex: !addon first warrior) Versão Completa (0.9) 17/01/12 -Mudanças no Depot. -Novo Distro "muito melhor" -Addons dão atributos agora. -Anti-Push dos BOTS (Elf e Cya) -Frag arrumado. -Sem bug das Guilds. -Adicionado Refinaria em Baixo do Temple. -Na versão com teleports, foi feito uma nova area. -Boas mudanças na Cidade Principal. -Novidade nos prêmios da POI. -Sem Bugs Versão Completa (1.0) 01/03/13 -Retirei o bug da contagem de frags -melhorei a jogabilidade. -Sem Bugs Versão Completa (1.1) 03/03/13 -Coloquei sistema anti-magebomb -Pode se comprar VIP no NPC Hagar. Versão Completa (1.2) 16/03/13 -Nova Distro "Muito Melhor", pois nao da lag no server. -Não tem mais as dll's infectadas (virus). -Coloquei mais areas de caça no OT -Novos Npcs -Npc Esrik em cima do ponto de venda do NPC Raphael -Modifiquei o Templo -Sistema anti-divulgação de OT-Server -Adicionei o comando !promotion -Deixei a database mais segura. -Verifiquei se havia alguns bugs. Versão Premium 26/04/13 -War System com Escudos 100% sem utilizar database sql (BY LeozeraRox) -War of Emperium sem utilizar database sql /woe on(Configurado para todas as quartas e sabados as 18 horas) -Edições na cidade -Edições na Hunt de Cyclops -Edições na Hunt de GS -Edições na Hunt de Demon -Vocações Balancead -SD Igual tibia global -Adicionei uma Hunt de Hero -Novo Comando para informações do server !expinfo -Novos Npcs: Alice -Guia do War System !infowar -Removi Bugs de mapping -Removi Bugs da Database -Pronto para deixar online. -Sistemas de Pontos /atributos -Adicionado o NPC Scrutinon -Adicionado Lottery System, sorteando addon dolls -Retirei bug maps. Versão GOLD 2016: OBS: Primeiramente gostaria de explicar a minha volta. Depois de muito tempo sem postar, atualizar, encontrei no meu computador uma versão do Styller unica, sem bugs e a qual eu nunca havia compartilhado, pois eu utilizava esta para fazer meus OTs. Agora estou disponibilizando abaixo. -Cidade toda reformulada (Procurei valorizar o PVP) -Sistema de venda de itens offline -Training Offline -Edições na Hunt de Draggy -Sistema de exp guild, a exp de todos aumentam em 1% para cada membro online -Sistema de casamento, marido e esposa ao caçar juntos ganham mais exp. (!marriage info) -Vocações Balanceadas -Regulagem das Spells -Sistema de Itens VIP -Vip agora pode ser comprada com !buyvip -Novos Npcs. -Area de Trainer toda reformulada -Incorporei a database sql, para quem preferir -Castelo de respawns e npcs exclusivos para quem terminar Inquisition Quest -Barco oferecendo viagens para 5 cidades -Area de teleports reformulada -Adicionei o removedor de frags para quem terminar Inquisition Quest -Adicionei o sistema de montaria para quem terminar Inquisition Quest -Nova quest para level 250+ -Sistema de presentes para os players -Auto bless para players 40- (Anti power abuser) -Novas areas de hunt -É possivel ver os inimigos do Guild War System que estão online (!warmembers) -Otimizei para que não ficasse pesado e prejudicasse a jogabilidade -Informações randomicas no broadcast -War of Emperium reformulada. -Deathcast. (Estimular a War e o Revanchismo). -Sistema de recuperação de stamina, basta deixar treinando nos trainers. -Retirei bug maps. Versão 2017: -Senha do GOD corrigida -Otimização. -Removi alguns bugs. Versão PLATINUM [03/03/2017]: -Nova distro bem mais otimizada -Adicionado Cast System. (!cast on) -Adicionado o CASTLE WAR 24Hrs -Battle sai ao entrar em Protection Zone. -Não é possivel jogar lixo nas casas. -!disband corrigido -Adicionado 2 cidades (Ghala e Belisy) -Auto Loot Adicionado. -Remoção de bug maps. Acc do GOD Raymond: god/styller ScreenShots Novo Visual do Templo Castle War 24Hrs War of Emperium Novo Visual dos Trainers. Barco para as Cidades cheias de Hunts Novo Visual do Depot Novos Teleports. Firewalker Boots Quest. Trainers Offline. Blue Legs Quest Real. Refinaria. War System 100%. Vocation VIP - Second Promotion. Inquisition Castle para quem terminou a Inquisition. Download Styller Yourots Platinum "2017" (8.60) https://www.4shared.com/rar/NtjBLvNyei/86_Styller_Yourots_Platinum_20.html? Scan.\\\"/// --> https://www.virustot...sis/1363451248/ Mapa Editor ---> Clique Aqui Postem ae o que Acharam Galera!!! Obrigado RME pela perfeição e por ser um Exelente Map Editor!!! Gogo Up LeveL!
- 675 respostas
-
- vip system
- war system
-
(e 7 mais)
Tags:
-
Aew, Fiz esse action apartir da ideia do meu amigo, ele queria que ao cortar os monstros mortos voce ganharia comida. Entao eu fiz. Crie um arquivo chamado monsterfood.lua Acrescente isso no actions.xml --Explicaçao Vou explicar, quanu voce der use with em uma knife(3229),sickle(3231),scythe(3391) com um monstro morto (esse monstro ja tem que estar aprodecido), voce ira ganhar uma meat ou uma ham dependendo do mosntro. Ai o monstro ja aprodecido ira virar um eskeleto. --Bugs Sim.... dry.gif 1 - O elefante, ovelha branca e negra, wolf branco e cinza. Podem ser cortados no 2 estagio do aprodecimento, porque nao tem um ID antes do eskeleto que nao possa ser aberto 2 - Os bixos depois de cortados viram eskeleto, ai tem um problema! O bixo nao volta a aprodecer, vai fica akele eskeleto pra sempre! --EDIT Depos de cada monstro adicione doDecayItem(item2.uid) para ter o decay do eskeleto! Qualquer duvida postaew!
-
NPCDEPALADIN NPCDEKNIGHT NPCDEMAGES
-
[Creaturescript] e [Action] Slot System-Multi Slot
um tópico no fórum postou JeanCristian Mods, funções e outros
venho aqui postar a vocês um script de slot com porcentagens de hp,ml,distance e skills, eu achava que aqui na xtibia ja tinha esse script eu procurei procurei e não achei nada... então resolvi procurar em outro forum para postar aqui, porque ja vi muitas pessoas procurando ele, se o script não agradar alguem ou se ja tem esse script aqui... espero que reportem só quero ajudar tanto faz se tomo ban ou não vlw. este script faz a seguinte função, ele adiciona um atribute do items.xml no seu equipamento aleatoriamente e voce pode configurar para quantos slots quizer, por exemplo eu uso o item 8300 em uma demon legs, pode vir 2% de hp ou de ml de club axe sword= CAS ou distance. por enquanto eu não sei configurar para arrumar as porcentagens e aprimorar mais o script mais ja que tem tantas pessoas procurando ele postei aquii para quem quizer modificar e obter no proprio servidor esta aqui ^^ eu tive uma ideia para quem quizer modificar tambem que é assim, faz para o script ter 1 item para cada funçao de hp ml mp skill e distance, e uma porcentagem certa nao randomica seria otimo alguem conseguir isso obrigado <3 abraços creditos esta no final da postagem. Primeiro abra a pasta data/action/action.xml do seu ot e adicione esta tag: <action itemid="8300" event="script" value="slot.lua"/> lembrando que o numero que eu colokei "8300" é o id do item que vai dar use nos equipamentos. agora abra a pasta data/action/scripts copie um arquivo qualquer de .lua e cole renomeie para slot e adicione isto dentro. Depois que fizer isto abra o arquivo data/creaturescripts/creaturescripts.xml e adicione esta tag : <event type="login" name="SlotLogin" script="slot.lua"/> depois vc abre a pasta data/creaturescripts/scripts copie um arquivo .lua qualquer e cole depois renomeie para slot e adicione esta tag dentro do arquivo: pronto o systema de slot esta no seu servidor Creditos:Mock -
Essa é uma função que criei a uns meses já. Primeiro vá ao seu phpmyadmin e execute essa query na db : CREATE TABLE `account_storage` ( `account_id` int(11) NOT NULL default '0', `key` int(10) unsigned NOT NULL default '0', `value` varchar(255) NOT NULL default '0', UNIQUE KEY `account_id_2` (`account_id`,`key`), KEY `account_id` (`account_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Agora só usar nos scripts ou na lib : function getAccountStorageValue(accid, key) local resultId = db.storeQuery("SELECT `account_id`, `key` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key) if resultId ~= false then return result.getNumber(resultId, 'key') else return -1 end return resultId:free() end function setAccountStorageValue(accid, key, value) local resultId = db.storeQuery("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key) if resultId ~= false then db.query("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');") else db.query("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');") end return true end Modo de uso : function onLogin(player) local storage = 545465 local pid = player:getGuid() local query = db.storeQuery("SELECT `account_id` FROM `players` WHERE `id` = ".. pid) local value = result.getNumber(query, 'account_id') if getAccountStorageValue(value, storage) < 1 then player:addPremiumDays(3) setAccountStorageValue(value, storage, 1) end return true end Script original veio do teckman, eu adaptei pras novas versões. You see!~
-
Gesior Acc Maker 0.3.8 Modificado E Customizado
um tópico no fórum postou walefxavier Websites & Layouts
Esta é uma versão do [GesiorAcc] ,um site completo e bem amplo ,com várias modificações e algumas novas funções,uma excelente opção para quem procura algo diferente ou pra quem está começando um servidor. O que há de novo? * Novos Estilos (Backgrounds,Buttons,Headers e Artworks.) * Pagina de download com Tibia 8.60, Ip Changer, HyperCam e Team Speaker. * Guild War System Customized (Scripts pegar na aba Tutoriais de WebSite) * Top 100 Killer do Servidor * Advanced Character Page (Traduzida ,bem formal e "Única".) * Who is Online? (Versão 0.3.8 modificada para adaptações em todos os servidores) * Trade System (Explicações no site e em PT) * Novo Support List * Addons Page (Com fotos,Premium Required,Male of Female e Itens necessários.) * Pagina Server Info (Modificada,bem simples e no jeito de colocar as informações do seu servidor.) * Novo Shop Offer com novo estilo (Preto e Amarelo) e as abas | Dias Vip | Itens a Venda | Outros | ! * Pagina Benefícios totalmente reformulada e muito simples para modificar. * Novo ! Pagina de Buypoints auto-explicativa...e semi-automática ! >> Leia Abaixo sobre << A pagina consiste em: O player escreve o nome do char e escolhe a quantidade de pontos que deseja comprar,clica em finalizar e é redirecionado para a página do pagseguro para terminar o pagamento. No pagseguro será mostrado o nome do char e a quantidade de pontos,assim,quando o pagamento for confirmado voce já saberá para quem os pontos devem ser entregues,não precisando mais de Confirmação de Pagamentos. Abaixo,veja algumas fotos das principais modificações: New Addons Page Pagina de Benefícios Pagina de Characters Customizada Pagina de Downloads Novo Estilo do Shop Offer Trade System Obs: 1° O site ja vai com alguns sistemas que necessitam das tabelas na sua database,como o War System,Trade System e o Top 100 Killer, então vou posta-las abaixo para que adicionem no SQL.(Quem não quiser utilizar os sistemas é so apagar as paginas ditas acima do layout.) Link das Tabelas 2° Em Htdocs/Config/Config.php , vá lá em baixo e coloque seu email pagseguro para o sistema de compra funcionar. 3° A página Houses não está a vista...mas está configurada para funcionar,quem quiser é so adiciona-la no Layout. *É isso ,por favor não postem erros de tabelas aqui,ja foi explicado acima que pode dar error por causa dos sistemas que estão nosite ,basta voce adicionar as tables que postei no download acima ou então apagar as paginas do layout ou do index.php ! Vlw Galera ! DOWNLOAD DO SITE SCAN DO SITE -
Nome Do Autor : Xisto Versão Testada : 8.54 -- Pokemon Dash Advanced / Centurion Explicação : Um sistema de pesca em que e obrigatorio o uso de uma certa roupa.Créditos : Xisto 1 - Script local storage = 15458 local storageP = 154580 local bonus = 1 local limite = 80 local function doFish(cid, pos, ppos, chance, interval, number) if not isCreature(cid) then return false end if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then return false end if getPlayerStorageValue(cid, storage) ~= number then return false end doSendMagicEffect(pos, CONST_ME_LOSEENERGY) local peixe = 0 local playerpos = getClosestFreeTile(cid, getThingPos(cid)) local fishes = {} local randomfish = "" --alterado!! if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, 20) end for a, b in pairs (fishing) do if getPlayerSkillLevel(cid, 6) >= b.skill then table.insert(fishes, a) end end if math.random(1, 100) <= chance then if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus) end randomfish = fishes[math.random(#fishes)] peixe = doSummonCreature(randomfish, playerpos) if not isCreature(peixe) then addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) return true end doSetMonsterPassive(peixe) doWildAttackPlayer(peixe, cid) if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) ---- 1 e o efeito que ira sair ao usar a rod na agua. doChallengeCreature(getCreatureSummons(cid)[1], peixe) else doSendMagicEffect(getThingPos(cid), 173) doChallengeCreature(cid, peixe) end setPlayerStorageValue(cid, storageP, 1) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_OUTFIT) return true end addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) setPlayerStorageValue(cid, storageP, 1) doCreatureSetNoMove(cid, true) return true end local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825} function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerGroupId(cid) == 11 then return true end local checkPos = toPos checkPos.stackpos = 0 if getTileThingByPos(checkPos).itemid <= 0 then doPlayerSendCancel(cid, '!') return true end if not isInArray(waters, getTileInfo(toPos).itemid) then return true end if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then doPlayerSendCancel(cid, "You can't fish while surfing/flying.") return true end if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can't fish while surfing neither flying above water.") return true end if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.") return true end if getPlayerStorageValue(cid, storageP) > 0 then doPlayerSendTextMessage(cid, 27, "You are already fishing.") return true end if getPlayerSex(cid) == 1 then if getCreatureOutfit(cid).lookType ~= 520 then ---- Outfit necessaria para usar o fishing doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fisher outfit for fishing.") return false end else if getCreatureOutfit(cid).lookType ~= 521 then ---- Outfit necessaria para usar o fishing doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fisher outfit for fishing.") return false end end if not tonumber(getPlayerStorageValue(cid, storage)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[fishing.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, storage).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, storage, 1) end setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1) if getPlayerStorageValue(cid, storage) >= 800 then setPlayerStorageValue(cid, storage, 1) end local delay = 3500 - getPlayerSkillLevel(cid, 6) * 25 local chance = 10 + getPlayerSkillLevel(cid, 6) / 2.5 outfit = getCreatureOutfit(cid) if getPlayerSex(cid) == 0 then out = 1467 --- Outfit de Pesca FEMININA else out = 1468 --- Outfit de Pesca MASCULINA end doSetCreatureOutfit(cid, {lookType = out, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1) doFish(cid, toPos, getThingPos(cid), chance, delay, getPlayerStorageValue(cid, storage)) return true end 2 - Tag do Actions.xml A tag ja existe no server baixado por voce. Mais caso queira estarei postando as que eu uso: <action itemid="2580" event="script" value="tools/fishing.lua" allowfaruse="1"/> <action itemid="10223" event="script" value="tools/fishing.lua" allowfaruse="1"/> 3 - Modificações Local para mudar o ID das roupas com a vara de pesca: out = 1467 --- Outfit de Pesca FEMININA else out = 1468 --- Outfit de Pesca MASCULINA Caso nao tenham a outfit busquem no client da PxG 3.1 - Efeitos Caso queira mudar o efeito que apareçe ao pescar mude aqui: doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) 1 em vermelho e o efeito Esse script pode ser modificado facilmente por alguem experiente....
-
local function kb1(cid) setPlayerStorageValue(cid,555010,0) end function onCastSpell(cid, var) local waittime = 60 -- Tempo de exhaustion local storage = 3030707 local Tile1 = {x = 1226, y = 1134, z = 8} -- onde o player sera teleportado local Tile2 = {x = 1226, y = 1133, z = 8} -- onde o player target teleportado local from1,to1 = {x=967, y=1018, z=7},{x=984, y=1048, z=7} -- KONOHA TRAINER local from2,to2 = {x=967, y=1030, z=6},{x=984, y=1048, z=6} -- KONOHA TRAINER local from3,to3 = {x=967, y=1030, z=5},{x=984, y=1048, z=5} -- KONOHA TRAINER local from4,to4 = {x=1148, y=735, z=7},{x=1163, y=755, z=7} -- YUKIGAKURE TRAINER local from5,to5 = {x=1148, y=735, z=6},{x=1163, y=755, z=6} -- YUKIGAKURE TRAINER local from6,to6 = {x=1148, y=735, z=5},{x=1163, y=755, z=5} -- YUKIGAKURE TRAINER local from7,to7 = {x=424, y=802, z=8},{x=438, y=826, z=8} -- SUNA TRAINER local from8,to8 = {x=424, y=802, z=9},{x=438, y=826, z=9} -- SUNA TRAINER local from9,to9 = {x=424, y=802, z=10},{x=438, y=826, z=10} -- SUNA TRAINER local from10,to10 = {x=1290, y=482, z=7},{x=1309, y=491, z=7} -- VILA TAKUMI TRAINER local from11,to11 = {x=1290, y=482, z=6},{x=1309, y=491, z=6} -- VILA TAKUMI TRAINER local from12,to12 = {x=1290, y=482, z=5},{x=1309, y=491, z=5} -- VILA TAKUMI TRAINER local from13,to13 = {x=1862, y=185, z=7},{x=2045, y=1123, z=7} -- CASTELO WAR local from14,to14 = {x=1862, y=185, z=6},{x=2045, y=1123, z=6} -- CASTELO WAR local from15,to15 = {x=1862, y=185, z=5},{x=2045, y=1123, z=5} -- CASTELO WAR local from16,to16 = {x=1955, y=244, z=10},{x=1968, y=278, z=10} -- CASTELO XP BONUS local from17,to17 = {x = 953, y = 1018, z = 7},{x = 984, y = 1042, z = 7 } -- AREA DE INVASAO local from18,to18 = {x = 762, y = 170, z = 12},{x = 1241, y = 439, z = 12} -- KAMUI local from19,to19 = {x = 762, y = 170, z = 12},{x = 1241, y = 439, z = 11} -- KAMUI local master = getCreatureMaster(cid) local pos = getCreaturePosition(cid) local target = getCreatureTarget(cid) local targetpos = getCreaturePosition(target) local time = 10 -- tempo para voltar em segundos local exceptions = {'Crystal Vilarejo', 'aegis', 'god anderson'} if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") return false end if isInRange(pos, from1, to1) or isInRange(pos, from2, to2) or isInRange(pos, from3, to3) or isInRange(pos, from4, to4) or isInRange(pos, from5, to5) or isInRange(pos, from6, to6) or isInRange(pos, from7, to7) or isInRange(pos, from8, to8) or isInRange(pos, from9, to9) or isInRange(pos, from10, to10) or isInRange(pos, from11, to11) or isInRange(pos, from12, to12) or isInRange(pos, from13, to13) or isInRange(pos, from14, to14) or isInRange(pos, from15, to15) or isInRange(pos, from16, to16) or isInRange(pos, from17, to17) or isInRange(pos, from18, to18) or isInRange(pos, from19, to19) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce nao pode usar o Mundo aqui!") return TRUE end local function Teleport_Playerout(cid) doTeleportThing(cid, pos) end local function Teleport_Targetout(target) doTeleportThing(target, targetpos) end local function Teleport_Targetin(target) doTeleportThing(target, Tile2) end setPlayerStorageValue (cid, 555010, 1) if isPlayer(target) then exhaustion.set(cid, storage, waittime) doSendMagicEffect(targetpos, 10) addEvent(Teleport_Targetout, time*1000, target) addEvent(Teleport_Targetin, 0, target) doCreatureSay(cid, "Taimu rain Sharingan", TALKTYPE_MONSTER) if getPlayerStorageValue(cid, 555010) > 0 then for j = 1, 1 do addEvent(function() if isCreature(cid) then kb1(cid) end end, 10000 + ((j-1) * 1)) end end else doPlayerSendCancel(cid, "Voce so pode usar esta magia em players!") end end
-
Instalação Primeiramente abra a pasta de seu ot, e procure pelo arquivo config.lua e procure por essas 2 linhas : experienceStages = false rateExperience = 50 se o experienceStages tiver ativado mude para false, pois o Stages é configurado no próprio script, e é muito importante o rateExperience tiver como 0, exemplo: experienceStages = false rateExperience = 0 agora entre na pasta creaturescripts/scripts e crie um arquivo lua, chamado exphit.lua e cole o seguinte código: para versões mais antigas como 8.54, 8.6 use : para versões mais novas como 9.8 : na mesma pasta procure pelo arquivo login.lua, e em cima de return true, adc a seguinte linha: registerCreatureEvent(cid, "ExpHit") volte na pasta anterior creaturescripts, e procure pelo arquivo creaturescritps.xml e cole as 2 tags: <event type="statschange" name="ExpGain" event="script" value="exphit.lua"/> <event type="combat" name="ExpHit" event="script" value="exphit.lua"/> para configurar a exp, que era configurada no config.lua está no começo do arquivo exphit.lua , e as configurações da party tbem, dos anéis, e até pode ser usado stages agora, segue abaixo o exemplo: -- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = false -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 50 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 50, ["51-100"] = 45, ["101-150"] = 40, ["151-200"] = 35, ["201-250"] = 30, ["251-300"] = 25, ["351-400"] = 20, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES ---- Log V2.0 : Log V3.0 ( 03/02/2013 ) : Log V4.0 ( 12/11/2013 ) :
-
Oie pessoal, quanto tempo não venho a está seção fazer um tópico. auhasuhaush' Então, estou querendo treinar um pouco script, aprender mais como criar, editar e talz... Queria saber se existe algum livro que ensine a scriptear, ou se não, ensine a parte da programação que é usada em otserv's... Estou fazer um server e quero aprender mais sobre esta parte tão necessaria dos otserv's... XD Valeu ai, fuiz!! U.U'
-
Pessoal preciso de um jeito de aparecer na tela em cima o nome do local que o player esta entrando por exemplo se entrar no templo de saffron aparecer "Templo de saffron" na tela
-
'~" MOD Comprar Item Por Alavanca "~' Como funciona? Não está muito dificil de entender, simplesmente é compra itens (no caso runas) por alavanca com um mod: Script: Na pasta principal do seu ot, entre na pasta MODS, e dentro crie um arquivo chamado Itemslever.xml Explicação: [5556] = {item = 2273, count = 1, charges = 2, cost = 50, backpack = false, backpackID = 0, backpackCount = 0, cap = true}, _________________________________ |» Unique que se vai por na alavanca | |» ID do item que será comprado | |» Quantia que vai vim a cada puxada |___________________________________________ |» Cargas, quantas cargas vão vir (caso seja runa), se não for runa coloca 'charges = 1' | |» Preço que o player vai pagar _________________________________________________| |» Não precisa mecher _______| |___________________|
-
Nome: Advanced Poll System Tipo: Talkaction Autor: Oneshot Fala, meus queridos. Peregrinando pela seção de Pedidos e Dúvidas, vi um pedido do membro sarioyana que despertou minha vontade de programar sistemas um pouco mais elaborados. O pedido dele se trata de um sistema de votação, onde o responsável pelo servidor pode iniciar uma votação com quantas opções desejar. Fiz algo bem simples, você só precisa configurar os storages no ínicio do script, caso você já esteja usando os que estão por padrão. Abra seu arquivo talkactions.xml e adicione isso: <talkaction log="yes" words="/newpoll;/endpoll" access="5" event="script" value="pollsystem.lua"/> <talkaction words="/vote;/poll" event="script" value="pollsystem.lua"/> Crie um novo arquivo chamado pollsystem.lua em data/talkactions/scripts e adicione isso: local POLL_STORAGE = 80000 local OPTIONS_STORAGE = 80001 local PLAYER_STORAGE = 80000 local function getTotalVotes() local options = table.unserialize(getStorage(OPTIONS_STORAGE)) local amount = 0 for _, option in ipairs(options) do amount = amount + option[2] end return amount end local function getMostVotedOption() local options = table.unserialize(getStorage(OPTIONS_STORAGE)) local value, ret = 0 for _, option in ipairs(options) do if option[2] > value then value = option[2] ret = option[1] end end return ret end function onSay(cid, words, param, channel) param = param or "" if param == "" and not words == "/poll" then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command ".. words .." need parameters.") end local parameters, vote = {} if(words == "/newpoll") then if getStorage(POLL_STORAGE) ~= -1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but there is a poll in progress.\nIf you want to start a new poll, type /endpoll.") end parameters = string.explode(param, ",") if #parameters < 3 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command /newpoll needs a poll and at least two options.") end if parameters[1] then local options = {} for i = 2, #parameters do table.insert(options, {parameters[i], 0}) end if #options < 2 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Insert at least two options after the poll") end doSetStorage(POLL_STORAGE, parameters[1]) options = table.serialize(options) doSetStorage(OPTIONS_STORAGE, options) doBroadcastMessage("A new poll is in progress with the title '".. getStorage(POLL_STORAGE) .."?'!\nSee the status with /poll and vote with /vote.") end elseif(words == "/vote") then vote = tonumber(param) or -1 local options = table.unserialize(getStorage(OPTIONS_STORAGE)) if getStorage(POLL_STORAGE) == -1 then return doPlayerSendCancel(cid, "There is not a poll in progress.") end if vote == -1 then return doPlayerSendCancel(cid, "You need to choose a option to vote.") end if getCreatureStorage(cid, PLAYER_STORAGE) == 1 then print(getCreatureStorage(cid, PLAYER_STORAGE)) return doPlayerSendCancel(cid, "You cannot vote two times.") end if vote > #options then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end options[vote][2] = options[vote][2] + 1 doSetStorage(OPTIONS_STORAGE, table.serialize(options)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have voted in the option ".. options[vote][1] .." successfully!") doCreatureSetStorage(cid, PLAYER_STORAGE, 1) elseif(words == "/poll") then local options = table.unserialize(getStorage(OPTIONS_STORAGE)) if getStorage(POLL_STORAGE) == -1 then return doPlayerSendCancel(cid, "There is not a poll in progress.") end local text = "ADVANCED poll SYSTEM\n\n".. getStorage(POLL_STORAGE) .."?\n" local count = 1 for _, option in ipairs(options) do text = text .."\n#".. count .." ".. option[1] .." ".. (getTotalVotes() == 0 and 0 or math.floor((option[2]/getTotalVotes()) * 100)) .."%\n" count = count + 1 end doPlayerPopupFYI(cid, text) elseif(words == "/endpoll") then if getStorage(POLL_STORAGE) == -1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "There is not a poll to be ended.") end if not getMostVotedOption() then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wait at least one vote to end this poll.") end doBroadcastMessage("The poll '".. getStorage(POLL_STORAGE) .."?' has been finished!\nThe most voted option was ".. getMostVotedOption() ..".") doSetStorage(POLL_STORAGE, -1) doSetStorage(OPTIONS_STORAGE, -1) for _, player in ipairs(getPlayersOnline()) do doCreatureSetStorage(player, PLAYER_STORAGE, -1) end db.executeQuery("UPDATE `player_storage` SET value = -1 WHERE `key` = ".. PLAYER_STORAGE ..";") end return true end E pronto, o sistema está instalado. Basta agora no jogo com um GOD digitar: /newpoll pergunta,opção1,opção2,opção3,... E para finalizar a enquete /endpoll Jogadores podem usar os comandos abaixo para visualizar o estado da enquete e votar, respectivamente. /poll /vote O comando /vote deve ser seguido do número da opção que aparece no comando /poll Irei postar em breve um vídeo, fiquem ligados. Um grande abraço.
-
Hoje irei postar um Script de Catch Por Skill Configurado No "Sword Fighting" do Seu OLDC/OTC, por NextBr vamos lá: Resumo: Quanto Maior o Skill "Catching" Maior a chance de Captura do Pokemon! OBS: Eu nao Vou Postar o Script Completo Pois de Cada (PDA) ou (PDA - COM PokeLevel) é Diferente um do Outro, Eu So vou Ensinar a Voces a como Adicionar o Sistema em Seus Servidores! Testado em: - Pokemon Dash Advanced - Não é difícil adaptar para outros servidores. Primeiro Vai em Data/Lib/catchsystem.lua e Procure por essa Funçao: Na Parte aonde manda a MSG de que Voce "capturou um Pokemon" e "Capturou um Pokemon e Foi para o CP" add Isso Abaixo dessas Msg: - Resumo: doPlayerAddSkillTry(cid,2,10) --- Quando Capturar um Pokemon vai Ganhar 10% de Skill "2". - Obs: No meu Client o Skill Catching Esta no Skill "Sword Fighting" Bom logo após você vai em data/actions/catch.lua e no começo do Script adiciona isto: Agora Procure essa Funçao: local catchinfo = {} E Troca por Isso: -OBS: O Script é Bem Basico. Dar Para adicionar varios Coisas Como (Ganhar EXP Dependendo do Skill/Almentar Chance de Catch para Premium Account e etc...) Imagens: OBS: Só vai ganhar Skill se você Capturar o Pokemon e Recomendo á vocês Deixar o catch BAIXO! Por que o script faz a soma de rate um Exemplo: Pokeball Rate: 50 Skill Cathing Rate (com 25 de Skill Cathing) : 100 Somar: 50+100 = 150 de Rate o Jogador vai ter [script Atualizado Dia 25/01/2015] [+] Creditos: NextBR
- 4 respostas
-
- catch por skill
- 8.54
-
(e 2 mais)
Tags:
-
mod [TFS 1.x] Gaz'Haragoth (Heal + Magia + Teleport)
um tópico no fórum postou larissaots Mods, funções e outros
Créditos: luanluciano93 HEAL - Se o life dele chega a 50k, ele solta um aviso, e depois de 5 segundos heala 300k. Crie um arquivo em creaturescripts/scripts/ com o nome heal_gaz.lua e coloque esse código: -- <event type="healthchange" name="HealGaz" script="heal_gaz.lua"/> local config = { life_ative = 50000, life_add = 300000, seconds_ative = 5, gStorage = 90702, } local function Uheal(cid) local gaz = Monster(cid) gaz:addHealth(config.life_add) gaz:say("Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY) gaz:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) Game.setStorageValue(config.gStorage, 0) end function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if attacker then if creature:getHealth() < config.life_ative and Game.getStorageValue(config.gStorage) < 1 then creature:say("Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY) addEvent(Uheal, 1000 * config.seconds_ative, creature.uid) Game.setStorageValue(config.gStorage, 1) end end return primaryDamage, primaryType, secondaryDamage, secondaryType end A tag que deve add ao creaturescript.xml esta como comentário no script, é só adicionar. Depois para funcionar no Gaz, vá até o xml dele em monster e coloque em seu código: <script> <event name="HealGaz" /> </script> TELEPORT - Quem passa em cima do corpo dos summons do boss é teleportado para perto dele. Crie um arquivo em movements/scripts/ com o nome tp_gaz.lua e coloque esse código: -- <movevent event="StepIn" itemid="22455" script="teleport_gaz.lua"/> function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player == nil then return false end local monster = Creature("Gaz'Haragoth") if monster then player:teleportTo(monster:getPosition()) else player:teleportTo(fromPosition) end return true end A tag que deve add ao movements.xml esta como comentário no script, é só adicionar. -
action runa que heala life por por porcentagem
um tópico no fórum postou notle2012 Actions e Talkactions
Primeiro vá em / data / actions/ scripts cria um arquivo.lua function onUse(cid, item, frompos, item2, topos) exhaust,lifemax,porce = 1100,math.max((getPlayerLevel(cid)*10)),9 -- 9% if getPlayerStorageValue(cid, 14725) >= os.time() then return true end if getPlayerLevel(cid) > (lifemax/10-1) then doCreatureAddHealth(item2.uid, math.random(math.floor(getCreatureMaxHealth(cid)/100*porce/1.4),math.ceil(getCreatureMaxHealth(cid)/100*porce))) doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE) doCreatureSay(item2.uid, "Aaaah...", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 14725, os.time() + exhaust / 1000) return true end end actions.xml <action itemid="iddoitem" script="arquivo.lua"/> para alterar quantos porcentos quer que heala altera aqui o red exhaust,lifemax,porce = 1100,math.max((getPlayerLevel(cid)*10)),9 -- 9% -
Azeroth Server Updated 12/03/2012: v1.1 Outras Versões: v1.0 [8.70]: http://www.xtibia.com/forum/topic/150269-azeroth-server-updated/ v2.0 [9.60]: http://www.xtibia.com/forum/topic/205054-960-azeroth-rpg/ Versão: 8.60 Distro: TFS 0.4 Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Mapa RPG bem detalhado para Ots Low e Mid rate. > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome"). > NPCs de Travel/Boat diferentes para cada cidade. > Mais de 70 quests (além das principais) espalhadas pelo mapa. > Quests especiais com NPCs > Arena PvP sem perda de items. > Sistema de Guerras pelo Castelo [entre guilds] (mais detalhes abaixo) > Sistema de Refinamento e Slot (mais detalhes abaixo). > Sistema de Mineração (mais detalhes abaixo) > Scripts e sistemas aprimorados para o servidor > Distro SEM erro algum > Principais Quests: Annihilator Blue Legs Pits of Inferno MMS The Inquisition The Death FireWalker Boots Demon Helmet Draken Hell Conquer > 23 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Honor Castle War Upgrade & Slot System > Histórico: V 0.2 V 0.3 V 0.4 V 1.0 V 1.1 Edição e postagem(leia): Eu autorizo edições e repostagens do Azeroth Server (aliás, não posso proibir isso) mas peço a vocês que pelo menos respeitem o estilo do mapa. Eu não sei se poderei dar continuidade a ele, mas trata-se de um projeto RPG. Pensa só, eu tive um trabalhão pra editar o server, fiz tudo com mais amor do que o arroz que sua mãe faz com sazón, e você vai baixar, encher de teleportes e hunts quadradas, colocar armas com atk de 350000, sistemas VIPs sem propósito algum, vai copiar o tópico, retirar meus créditos e postar novamente? Reconsidere, pois não há nada mais desmotivador para um desenvolvedor do que isso, ver seu trabalho cair em desuso, como aconteceu com o Styller YourOts, Vancini e Baiak, que agora é um monstro sem pé nem cabeça (alguns gostam desse tipo de server, tudo bem, mas essa não é a proposta deste servidor). Se teve boas ideias e quer editar o servidor para postar, fique à vontade, estarei à disposição quando puder, mas não me decepcione, ok? lindos Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP, VIP 2, VIP 3, VIP 345456364. Não há raids com monstros excessivamente fortes nas cidades iniciais. Créditos: < Unknow YourOts Edited >< Mix Yourots Team >< Crystal Server Team >< Tryller >< Mock >< TFS Team >< TonyHanks >< Centera World >< Vmspk > (Nunca retire os créditos, nem mesmo se for postar o servidor em outro fórum) DOWNLOADS > Opcionais IP Changer - Utilitários(opcional) - Map Editor *Utilitários inclui: Lista com códigos de todos os looktypes, SQLite Studio 1.1.1, códigos das cores dos outfits e o OTRestarter. > Servidor Tive problemas para encontrar um distro confiável. Vários TFS não funcionavam direito ou pareciam estar infectados, segundo o VirusTotal, mas ao que me parece o site deve ter mudado algo em suas configurações, por que até arquivos limpos como o antigo Mix YourOts, postado aqui mesmo, agora ficam com 16 + arquivos suspeitos no novo scan. Eu optei por usar um TFS 0.4 postado na Vapus pelo usuário Lyonman (LINK). O distro foi testado com vários anti-virús, sem nenhum problema, e funciona perfeitamente com o Azeroth Server, porém, sou responsável apenas pelo DataPack do servidor. Se você decidir usar este distro, será por sua própria conta (ou se alguém tiver alguma versão do tfs 0.4 r3884 que passe lisa nos scans, poderei substituir). DOWNLOADS: Opção 1 Opção 2 Somente DataPack (+ IpChanger e SqliteStudio) Servidor Completo (DataPack + Distro e DLLs) Acc do GOD: vmspk/222222 Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. !info para saber mais sobre as novidades do Azeroth Server. Editável na pasta do Ot, em Notícias. Comando !bless e !rank disponíveis. Para saber os IDs das pedras e outras coisas vá ao Histórico, na versão 1.0. Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Conheça o mapa, crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre. Contato: vmspk@hotmail.com Conheça também o 4Fun Server 9.1 Este servidor está liberado para postagem, mas por enquanto só existe aqui no Xtibia Um bjo pra vcs
- 29 respostas
-
- versão 1.1 de 07/03/12
- otserv
- (e 2 mais)
-
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês Nome: Map IconDescrição: Adiciona um icone no minimapAutor: Eduardo Vicente (Banana Fight)Website: www.xtibia.com Versão 1.0 Features: Criar Icones no minimap Instalação dentro de modules/game_minimap/minimap.lua embaixo de : function toggle()if minimapButton:isOn() thenminimapWindow:close()minimapButton:setOn(false)elseminimapWindow:open()minimapButton:setOn(true)endend Você adiciona a função : function setMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:addFlag(pos, icon, description)endfunction removeMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:removeFlag(pos, icon, description)end Como usar setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem. Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira : setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave") Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png. Obs 2: Sua imagem tem que ter o fundo transparente Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo. Exemplo de uso : arquivo : minimap.lua function init()minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)minimapButton:setOn(true)minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())minimapWindow:setContentMinimumHeight(64)minimapWidget = minimapWindow:recursiveGetChildById('minimap')local gameRootPanel = modules.game_interface.getRootPanel()g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)g_keyboard.bindKeyDown('Ctrl+M', toggle)g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)minimapWindow:setup()connect(g_game, {onGameStart = online,onGameEnd = offline,})connect(LocalPlayer, {onPositionChange = updateCameraPosition})if g_game.isOnline() thenonline()setMonsterCave(32239, 32240, 7, "dragon", "hihi")removeMonsterCave(32239, 32240, 7, "dragon", "hihi")endend
-
Boa Tarde, estou tentando adaptar o snowball event para meu servidor, ja corrigi varios bugs, porém esse erro que não estou conseguindo resolver, pois não acho nenhuma documentação sobre sempre que uso o comando !snowball Atirar aparece esse erro na distro, mas a animação segue fluida no servidor, alguém sabe como resolver esse erro? sobre a line animation
-
bom o problema é o seguinte, eu peguei um autoloot no forum e ele funciona 100% mas ele não agrupa os items coletados. gostaria de uma ajuda nesse problema! quem poder ajudar já agradeço! ❤️ este é o script responsavel pela coleta! AutoLoot = { Min_Level = 10, -- [[ Level minimo para usar o autoloot ]] -- Max_Slots = 10, -- [[ Slots maximos disponiveis ]] -- Boost_Actived = true, --- [[ Storages ]] -- Storage_Boost = 45000, Storage_On_Items = 45001, Storage_On_Gold = 45002, Storages = { Count_Gold = 45003, Count_Items = 45004, Count_Table = 45005, Slots = {45006, 45007, 45008, 45009, 45010, 45011, 45012, 45013, 45014, 45015} -- [[ Storage pra cada slot ]] -- } } AutoLoot_Boost = { -- [[ Loot boost vende os loots coletados automaticamente ]] -- -- [[ID do item] = Valor.]] -- [11441] = 1000, [11442] = 1000, [11443] = 1000, [11444] = 1000, [11445] = 1000, [11446] = 1000, [11447] = 1000, [11448] = 1000, [11449] = 1000, [11450] = 1000, [11451] = 1000, [11452] = 1000, [11453] = 1000, [11454] = 1000 } function AutoLoot.CountTable(table) local Count = 0 if type(table) == "table" then for index in pairs(table) do Count = Count + 1 end return Count end return false end function AutoLoot.getContainerItemsInfo(ContainerUID) local Table = {} if ContainerUID and ContainerUID > 0 then local Index = 0 for i = 0, getContainerSize(ContainerUID) - 1 do local item = getContainerItem(ContainerUID, i) Index = Index + 1 Table[Index] = {UID = item.uid, ItemID = item.itemid, Count = item.type} end return Table end return false end function AutoLoot.String(String) local Table = {} local x, old, last = 0, 0, 0 local first, second, final = 0, 0, 0 if type(String) ~= "string" then return Table end for i = 2, #String - 1 do if string.byte(String:sub(i,i)) == string.byte(':') then x, second, last = x + 1, i - 1, i + 2 for t = last, #String - 1 do if string.byte(String:sub(t,t)) == string.byte(',') then first = x == 1 and 2 or old old, final = t + 2, t - 1 local Index = String:sub(first, second) local Var = String:sub(last, final) Table[tonumber(Index) or tostring(Index)] = tonumber(Var) or tostring(Var) break end end end end return Table end function AutoLoot.TranslateString(Table) local String = "" if type(Table) ~= "table" then return String end for i, last in pairs(Table) do String = String..i..": ".. last ..", " end String = "a"..String.."a" return tostring(String) end function AutoLoot.getPlayerStorageZero(cid, key) return getPlayerStorageValue(cid, key) > 0 and getPlayerStorageValue(cid, key) or 0 end function AutoLoot.getStorageZero(key) return getGlobalStorageValue(key) > 0 and getGlobalStorageValue(key) or 0 end function AutoLoot.setPlayerTableStorage(cid, key, value) return doPlayerSetStorageValue(cid, key, AutoLoot.TranslateString(value)) end function AutoLoot.setGlobalTableStorage(key, value) return setGlobalStorageValue(key, AutoLoot.TranslateString(value)) end function AutoLoot.getPlayerTableStorage(cid, key) return AutoLoot.String(getPlayerStorageValue(cid, key)) end function AutoLoot.getGlobalTableStorage(key) return AutoLoot.String(getGlobalStorageValue(key)) end function AutoLoot.getPlayerList(cid) local Table = {} for i = 1, #AutoLoot.Storages.Slots do if getPlayerStorageValue(cid, AutoLoot.Storages.Slots[i]) ~= -1 then table.insert(Table, getPlayerStorageValue(cid, AutoLoot.Storages.Slots[i])) end end return Table end function AutoLoot.ExistItemByName(name) local Items = io.open("data/items/items.xml", "r"):read("*all") local GetITEM = Items:match('name="' .. name ..'"') if GetITEM == nil or GetITEM == "" then return false end return true end function AutoLoot.addToList(cid, name) local ItemID = getItemIdByName(name) if AutoLoot.getPlayerList(cid) and isInArray(AutoLoot.getPlayerList(cid), ItemID) then return false end for i = 1, #AutoLoot.Storages.Slots do if getPlayerStorageValue(cid, AutoLoot.Storages.Slots[i]) == -1 then doPlayerSetStorageValue(cid, AutoLoot.Storages.Slots[i], ItemID) return true end end end function AutoLoot.removeFromList(cid, name) local ItemID = getItemIdByName(name) for i = 1, #AutoLoot.Storages.Slots do if getPlayerStorageValue(cid, AutoLoot.Storages.Slots[i]) == ItemID then doPlayerSetStorageValue(cid, AutoLoot.Storages.Slots[i], -1) return true end end return false end function AutoLoot.Boost(cid) return tonumber(getPlayerStorageValue(cid, AutoLoot.Storage_Boost)) >= os.time() end function AutoLoot.Items(cid, position) if not isPlayer(cid) then return true end local Check, String, Position = false, "", {} for i = 1, 255 do position.stackpos = i if getThingFromPos(position).uid and getThingFromPos(position).uid > 0 and isContainer(getThingFromPos(position).uid) then Position = position Check = true break end end if Check then local CorpseUID = AutoLoot.getContainerItemsInfo(getThingFromPos(Position).uid) if CorpseUID then for Index, Item in pairs(CorpseUID) do if Index < AutoLoot.CountTable(CorpseUID) then if Item.UID and Item.ItemID then if isContainer(Item.UID) then local Bag = AutoLoot.getContainerItemsInfo(Item.UID) for i = 1, AutoLoot.CountTable(Bag) do if isInArray(AutoLoot.getPlayerList(cid), Bag[i].ItemID) then if Bag[i].Count > 1 then doRemoveItem(Bag[i].uid, Bag[i].Count) doPlayerAddItem(cid, Bag[i].ItemID, Bag[i].Count) String = String.." ".. Bag[i].Count .." ".. getItemNameById(Bag[i].ItemID) .." +" else doRemoveItem(Bag[i].uid) if AutoLoot.Boost_Actived and AutoLoot.Boost(cid) then if AutoLoot_Boost[Bag[i].ItemID] then doPlayerSetBalance(cid, getPlayerBalance(cid) + AutoLoot_Boost[Bag[i].ItemID]) String = String.."1 ".. getItemNameById(Bag[i].ItemID) .." (".. AutoLoot_Boost[Bag[i].ItemID] .." dinheiro no banco)" else doPlayerAddItem(cid, Bag[i].ItemID, 1) String = String.."1 ".. getItemNameById(Bag[i].ItemID) .."" end else doPlayerAddItem(cid, Bag[i].ItemID, 1) String = String.."1 ".. getItemNameById(Bag[i].ItemID) .."" end end end end end end end if isInArray(AutoLoot.getPlayerList(cid), Item.ItemID) then if Item.Count > 1 then doRemoveItem(Item.UID, Item.Count) doPlayerAddItem(cid, Item.ItemID, Item.Count) String = String.." ".. Item.Count .." ".. getItemNameById(Item.ItemID) .." +" else doRemoveItem(Item.UID) if AutoLoot.Boost_Actived and AutoLoot.Boost(cid) then if AutoLoot_Boost[Item.ItemID] then doPlayerSetBalance(cid,getPlayerBalance(cid) + AutoLoot_Boost[Item.ItemID]) String = String.."1 "..getItemNameById(Item.ItemID).." ("..AutoLoot_Boost[Item.ItemID].." dinheiro no banco)" else doPlayerAddItem(cid, Item.ItemID, 1) String = String.."1 "..getItemNameById(Item.ItemID).."" end else doPlayerAddItem(cid, Item.ItemID, 1) String = String.."1 "..getItemNameById(Item.ItemID).."" end end end end end end AutoLoot.setPlayerTableStorage(cid, AutoLoot.Storages.Count_Table, {[1] = String, [2] = 0}) end function AutoLoot.Gold(cid, position) if not isPlayer(cid) then return true end local Check = false local Total_Gold = 0 local Position = {} for i = 1, 255 do position.stackpos = i if getThingFromPos(position).uid and getThingFromPos(position).uid > 0 and isContainer(getThingFromPos(position).uid) then Position = position Check = true break end end if Check then local CorpseUID = AutoLoot.getContainerItemsInfo(getThingFromPos(Position).uid) if CorpseUID then for Index, Item in pairs(CorpseUID) do if Item.UID and Item.ItemID then if Index < AutoLoot.CountTable(CorpseUID) then if isContainer(Item.UID) then local Bag = AutoLoot.getContainerItemsInfo(Item.UID) for i = 1, AutoLoot.CountTable(Bag) do if isInArray({2148, 2152, 2160}, Bag[i].ItemID) then local Multiplier = 1 if Bag[i].ItemID == 2148 then Multiplier = 1 elseif Bag[i].ItemID == 2152 then Multiplier = 100 elseif Bag[i].ItemID == 2160 then Multiplier = 1000 end doRemoveItem(Bag[i].uid, Bag[i].Count) doPlayerSetBalance(cid, getPlayerBalance(cid) + tonumber(Bag[i].Count) * Multiplier) Total_Gold = Total_Gold + Bag[i].Count * Multiplier doPlayerSetStorageValue(cid, AutoLoot.Storages.Count_Gold, tonumber(AutoLoot.getPlayerStorageZero(cid, AutoLoot.Storages.Count_Gold)) + tonumber(Item.Count) * tonumber(Multiplier)) end end end end if isInArray({2148, 2152, 2160}, Item.ItemID) then local Multiplier = 1 if Item.ItemID == 2148 then Multiplier = 1 elseif Item.ItemID == 2152 then Multiplier = 100 elseif Item.ItemID == 2160 then Multiplier = 1000 end doRemoveItem(Item.UID, Item.Count) doPlayerSetBalance(cid, getPlayerBalance(cid) + Item.Count * Multiplier) doPlayerSetStorageValue(cid, AutoLoot.Storages.Count_Gold, tonumber(AutoLoot.getPlayerStorageZero(cid, AutoLoot.Storages.Count_Gold)) + tonumber(Item.Count) * tonumber(Multiplier)) Total_Gold = Total_Gold + Item.Count * Multiplier end end end end end if Total_Gold > 0 then Total_Gold = Total_Gold - (Total_Gold * 0.2) Total_Gold = math.ceil(Total_Gold) doPlayerSetBalance(cid, getPlayerBalance(cid) + Total_Gold) local Table = AutoLoot.getPlayerTableStorage(cid, AutoLoot.Storages.Count_Table) Table[2] = Total_Gold AutoLoot.setPlayerTableStorage(cid, AutoLoot.Storages.Count_Table, Table) end end function AutoLoot.Message(cid) if not isPlayer(cid) then return true end local Table = AutoLoot.getPlayerTableStorage(cid, AutoLoot.Storages.Count_Table) if AutoLoot.CountTable(Table) >= 1 then if Table[1] then if Table[2] and Table[2] > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Auto Loot] Coletados: ".. Table[1] .." ".. Table[2] .." gold coins.") else if type(Table[1]) == "string" and string.len(Table[1]) > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Auto Loot] Coletados: "..Table[1]) end end elseif not Table[1] then if Table[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Auto Loot] Coletados: "..Table[2].." gold coins.") end end end doPlayerSetStorageValue(cid, AutoLoot.Storages.Count_Table, -1) end
-
12.x Evolera.pl v3 - UPDATE 12.11 EVOLUTION MEGA EDIT
um tópico no fórum postou LuckinhaSan OTServ Comum
Evolera v3 - SPECIAL EDITION 12.11 Equilíbrio De Profissões Nossa principal tarefa era equilibrar profissão, foi feito todos os esforços para fazer com que pareça profissional. Nesta edição ninguém reclamou dos ataques fracos de qualquer profissão. Bob Marley - Event Nosso convidado especial apareceu, NPC que nos dá missões incríveis. Eu acho que ele capturou um determinado grupo social para ots! Governor - Quest Quest Hardcore Oficialmente achamos ser a mais difícil missão no ot. Pode-se obter itens que não está no shoopie sms. Itens de hardcore aos equipamentos para cada profissão. Sacred Dragon Tales - Event Assim, as 10 missões de um dragão misterioso, cada missão é única. Dragão misterioso tem para você uma série de valiosos prêmios na forma de experience e itens. New Quest Room: Sala de quest totalmente reconstruída, agora parece muito mais agradável e linda! Reconstruiu a cidade/templo: A nova cidade é jescze mais misteriosa, esconde um monte de missões secretas, missões e locais para os quais podemos obter apenas alguns. O templo atualizou, agora com mais espaço, temos acrescentado novos teleports e npceki Novos monstros! Ghastly dragons Medusa Drakeny Helish Tortoisy Halloween Pumpkiny Rainbow Margarothy Sacred Dragon Child Sacred Mastery Novos NPC's! Bob Marley Governor Gladia Tommy Rastaman Uncle Fester Bob Marley Mother Novos Items! Armor-Noob Helmet-Noob Dark monk armor Guardian boots Dragon scale boots Lucky Charm Crystal-Tp Hardcore Set Hardcore Weapons E todos items Zaoan Novos Scripts! Agora, o seu progresso que você será capaz de verificar o log de quest Ou Lotto [sistema de bilhete! Ticket] Melhoria Tetris e Snake Boomberman Trem-atacante Monki Faster [você não pode matá-los] Segredos do sistema ou quests escondidas, missões, npceki lugar secreto Addons em nosso ots está ficando em 2 maneiras através de Missões Addon e Dolla Outfiter [alavanca dando addons no templo] agora muda roupas por 30min. Muito mais ataques e eventos Bounty Hunters [ou hunted system] Novos Systemas! War System Outfit system Afk system Extensive reporting system players New channels like "Yahoo" Castle System Vote System Boomberman system Tetris system Casino System Soccer System Snake system Addon Bonuses Lottery System Comandos para players! / Balance - controle de balanço ! Online - quem está online - Online ! Uptime - mostra quantas horas servidor Stoji ! Deathlist - lista de mortes ! Pvp - verifica se o servidor está pvp ou non-pvp ! serverinfo - informações do servidor / Commands - uma lista de comandos ! Soft - correção softy ! Firewalker - reparos FWB ! Backpack - mochila compra ! Aol - comprar Amulet of Loss ! Bless - abençoar compra 100% ! Premium - prêmio de compra ! spells - lista de spells ! Changesex - mudança de sexo ! Frags - mostra o número de frags ! it - guilda roupas mudança ! After - mudança de roupas festa ! Buyhouse - compra uma casa ! Sellhouse - vende uma casa ! Leavehouse - sair de casa ! Createguild - criar guildas ! Joinguild - Junte-se a guilda ! Afk on /! Afk off - afk sistema ! so - comando para votar ! Did not - comando para votar ! Bomb - bomba que você colocou no boomberman ! Ticket - Lotto sistema / War - todos os comandos para os goods Novos Eventos! Metin Stones Castle War Sacred Dragon Nesta edição, foi corrigido todos os erros de novos hosters [houses e problemas no map] Todos os créditos vão para Alex. Screens - Download - Via MediaFire Download - Via 4Shared -
meu deus.... as pessoas ficam cansandu seus chars, fazendu eles subir e descer escadas... nós temos em 2006, :suspiro vamus dexar nossos chars discansarem um poco de subir e descer escadas. eu como libero todas as actions ke eu faço com mt gosto, vo liberar mais uma Elevator System by Colex esta action tem 2 scripts (1 é u "painel" para escolher u andar e u otro é para depois de escolher um andar ir para u andar escolhidu) :pinch: vamos começar com os códigus e dps pra ensinar melhor vcs vaum encontrar uma screenshot explicando. Primeiro, va na pasta data>actions>scripts e crie um ficheiro chamado elevator.lua ondi vc vai escrever o seguinte code: ------elevator system (part 1 of 2) by colex------function onUse(cid, item, frompos, item2, topos)if (getPlayerStorageValue(cid,5080)) == -1 thendoPlayerSendTextMessage(cid,22,"1st floor")setPlayerStorageValue(cid,5080,1)elseif (getPlayerStorageValue(cid,5080)) == 1 thendoPlayerSendTextMessage(cid,22,"2nd floor")setPlayerStorageValue(cid,5080,2)elseif (getPlayerStorageValue(cid,5080)) == 2 thendoPlayerSendTextMessage(cid,22,"3rd floor")setPlayerStorageValue(cid,5080,-1)endreturn 1end agora, vamus fazer a 2º parte do script, faça na mesma pasta do code de cima, um ficheiro chamado elevator2.lua e escreva o seguinte code: ------elevator system (part 2 of 2) by Colex--------function onUse(cid, item, frompos, item2, topos)andar1 = {x=512, y=509, z=7}andar2 = {x=512, y=509, z=6}andar3 = {x=512, y=509, z=5}player1pos = getPlayerPosition(cid)player1 = getThingfromPos(player1pos)if player1.itemid == cid and (getPlayerStorageValue(cid,5080)) == 1 thendoTeleportThing(player1.uid,andar1)elseif player1.itemid == cid and (getPlayerStorageValue(cid,5080)) == 2 thendoTeleportThing(player1.uid,andar2)elseif player1.itemid == cid and (getPlayerStorageValue(cid,5080)) == -1 thendoTeleportThing(player1.uid,andar3)endreturn 1end aki vc deve trocar as coordenadas do andar1, andar2 e andar3. --------------------------------------- ultima parte é adicionar no ficheiro actions.xml ke esta na pasta data>actions as seguintes linhas: --------elevator---------<action uniqueid="1945" script="elevator2.lua" /><action uniqueid="1946" script="elevator2.lua" /><action uniqueid="1947" script="elevator2.lua" /><action uniqueid="1948" script="elevator.lua" /><action uniqueid="1949" script="elevator.lua" /><action uniqueid="1950" script="elevator.lua" />--------/elevator--------- explicando 1945 | 1946 | 1947 - estes são os uniqueids dos "paineis" ke servem para escolher u andar pra ondi vai (deve ter um em cada andar) 1948 | 1949 | 1950 - estes são os uniques id da "alavanca" (pode ser otro item) ke vc usa dps de escolher u andar nu painel, (vc va pro andar escolhidu nu painel) agora para explicar melhor postei uma SS: quadrado vermelho - istu daki é u "painel" ke será usado para escolher u andar (vc podi usar otro item) quadrado azul - essa alavanca é ondi vc da use dps de escolher u andar nu "painel" (tbm pode ser usado otro item) ------------------------ é isso ai!! espero ke gostem e ke comentem u ke axam| mesmu kem naum vai usar é bom comentar pq eu gasto meu tempo nissu e libero pra ajudar vcs
-
Ola galerinha do xtibiana. Vocês lembram do shopping system beta? Bem o shopping system beta foi um sistema criado por min a um tempinho. O link da versão beta é: http://www.xtibia.co...demo-by-caotic/ Os players podiam vender e comprar itens de forma rápida e pratica só que na versão demo ele tinha limitações então resolvi fazer a versão 1.0 com mais funções. Ele funciona da seguinte maneira: O player vende seu item no shopping depois outro player resolve ver o shopping e acaba comprando o item. Quando o player vendedor estiver online ele recebera a mensagem dizendo que o seu item foi vendido e ele recebera o money da compra. Na versão 1.0 do shopping system foi adicionado: Vamos a instalação. Primeiro execute estes comandos na sua database: CREATE TABLE "shop" ( "item" INT NOT NULL, "price" INT NOT NULL, "players" INT NOT NULL ); ALTER TABLE `players` ADD `shop` INT(15) NOT NULL DEFAULT 0 Agora va em lib e crie um arquivo lua chamado shop e coloque isto: function doPlayerAddItemInShop(cid, itemid, price) db.executeQuery("INSERT INTO `shop` VALUES (".. itemid ..", ".. price ..", ".. getPlayerGUID(cid) ..")") return true end function getItemPriceInShop(itemid) local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";") return shop:getDataInt("price") end function getItemPlayerInShop(itemid) local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";") return shop:getDataInt("players") end function getExistItemInShop(itemid) local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";") if shop:getID() ~= -1 then return true end return nil end function getExistItemPlayerInShop(player, itemid) local shop = db.getResult("SELECT * FROM `shop` WHERE `players` = ".. player .." and `item` = ".. itemid ..";") if shop:getID() ~= -1 then return true end return nil end function doPlayerBuyItemInShop(cid, itemid, player) doPlayerAddItem(cid, itemid) doPlayerRemoveMoney(cid, getItemPriceInShop(itemid)) db.executeQuery("UPDATE `players` SET `shop` = "..getItemPriceInShop(itemid).." WHERE `id` = "..getItemPlayerInShop(itemid)) db.executeQuery("DELETE FROM `shop` WHERE `players` = ".. player .." and `item` = ".. itemid ..";") end function getMoneyGainInShop(cid) local money = db.getResult("SELECT `shop` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) return money:getDataInt("shop") end function setMoneyGainInShop(cid, money) db.executeQuery("UPDATE `players` SET `shop` = "..money.." WHERE `id` = "..getPlayerGUID(cid)) end function doShowListShop(cid) local item = db.getResult("SELECT * FROM `shop` WHERE `item` ORDER BY `price`") str = "Itens a venda no shopping:\n\n" if item:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha itens disponiveis no shopping\n Não existe itens no shopping!") return true end while true do local list = item:getDataInt("item") local players = item:getDataInt("players") local price = item:getDataInt("price") local shops = "Itens em Shopping" local list = string.upper(getItemNameById(list)) local players = getPlayerNameByGUID(players) str = str .. list .. " -("..players..")- Preço ("..price..")]\n\n" if not item:next() then doShowTextDialog(cid, 1397, str) break end end end Agora vá em talkactions/script e crie um arquivo lua chamado list e coloque este codigo: function onSay(cid, words, param, channel) doShowListShop(cid) return true end Agora vá em talkactions denovo crie um arquivo lua chamado de shop e coloque isto: function onSay(cid, words, param, channel) if param == " " or param == "" or not param then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o id do item") end local t = string.explode(param, ",") if not t[1] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o id do item") end if not t[2] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o preço do item") end if(isNumeric(t[1])) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do item") end if not (isNumeric(t[2])) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque O PREÇO DO ITEM") end if not getItemIdByName(t[1], false) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[1].." não existe") end local item = getItemIdByName(t[1]) local price = t[2] if getPlayerItemCount(cid, item) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..t[1].."") end if getExistItemPlayerInShop(getPlayerGUID(cid), item) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já pos este item no shop") end doPlayerRemoveItem(cid, item, 1) doPlayerAddItemInShop(cid, item, price) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você colocou no shopping o seu item "..t[1].."") return true end Agora continue em talkactions e crie um arquivo lua chamado de comprar e coloque isto: function onSay(cid, words, param, channel) if param == " " or param == "" or not param or isNumeric(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do item dizendo /compra(nome do item,nome do player)") end local t = string.explode(param, ",") if not getItemIdByName(t[1], false) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[1].." não existe") end local itemid = getItemIdByName(t[1]) local player = getPlayerGUIDByName(t[2]) if not getExistItemInShop(itemid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não existe no shopping") end if t[2] == " " or t[2] == "" or isNumeric(t[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do vendendor dizendo /compra(nome do item,nome do player)") end if not doPlayerRemoveMoney(cid, getItemPriceInShop(itemid)) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..getItemPriceInShop(itemid).." para comprar "..t[1].." do shopping") end if not player then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe nenhum item com o nome deste player.") end doPlayerBuyItemInShop(cid, itemid, player) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabens você comprou "..t[1].."") return true end Agora coloque estas tags em talkactions.xml: Agora vá em creaturescripts/scripts e crie um arquivo lua chamado de shop: function onThink(cid, interval) if getMoneyGainInShop(cid) > 0 then doPlayerAddMoney(cid, getMoneyGainInShop(cid)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Seu itens foi vendidos você recebeu "..getMoneyGainInShop(cid).." money") setMoneyGainInShop(cid, 0) return true end return true end Registre o evento colocando em login.lua de creaturescripts e coloque isto antes do ultimo return: registerCreatureEvent(cid, "shop") Agora vá em creaturescrips.xml e coloque esta tag: E prontinho sistema instalado Comandos
- 9 respostas
-
- shopping system
- shop system
- (e 5 mais)