Líderes
-
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/21/18 em todas áreas
-
Dungeon and Dragons 3.5
Dungeon and Dragons 3.5
Werner e um outro reagiu a shaderas por uma resposta no tópico
2 pontosBom dia/tarde/noite a todos, Projeto OTSERV DUNGEON AND DRAGONS 3.5 Discord: https://discord.gg/6zKrgS PM: Me mande uma Mensagem Privada para maiores informações Proposta Trazer o mundo do Dungeon and Dragons edição 3.5 para o Tibia, não apenas em conteúdo e cenário, mas também trazendo todo o sistema do mundo dos livros e tabuleiros para o jogo. Encontrar uma maneira de adaptar fielmente os sistemas existentes no Livro do Jogador 3.5 e Livro do Mestre em algo funcional. Vai ser difícil? Para caralho. Possível? Sem sombra de dúvidas. Quem pode participar? Como o projeto será fins lucrativos e será para aprendizado e também um hobby, não vejo motivos para vetar a participação de quem estiver interessado. Todavia, darei preferência àqueles que tiverem experiência e também tempo disponível durante a semana para fazermos juntos este projeto ambicioso acontecer. Por quê desse projeto? Sou um jogador Oldschool de Tibia e também de Dungeon and Dragons de tabuleiro, e hoje não encontro nenhum que consiga juntar a simplicidade do Tibia com a imensa liberdade de escolhas que o Dungeon and Dragons me dá. Se eu quero ter 4 classes diferentes, o D&D me deixa. Se eu quiser ser um monstro, ou um vilão e dominar o mundo, o D&D permite. Gostaria de juntar essas duas coisas para fazer um Otserv que não trouxesse diversão pelas novas descobertas que o jogador terá, mas também não cagasse regras para o jogador. Quer ficar nadando o dia todo? Sem problemas! Como funcionará o desenvolvimento do projeto? Eu decidi usar Github para toda a questão de versionamento dos códigos, Trello para alinhar as demandas que necessitam ser feitas, foram feitas e estão sendo feitas; e também Discord para a comunicação da equipe que será formada. Ou seja, vai ser um projeto de gente grande utilizando as metodologias de gente grande, porém sem cobranças. Precisa ser divertido para todos os envolvidos e oferecer aprendizado! De quem o projeto mais precisa no momento? Como o projeto está no estado mais inicial possível, irá precisar de dois programadores. Com isso, conseguiríamos pensar em como criar os sistemas mais básicos para podermos criar uma metodologia de teste destes sistemas. Além disso, se algum interessado desejar aprender a programar, não tenho problemas em ensinar. Quem sou eu? Sou formado em Ciência da Computação e especializado em estatística. Comecei a programar em ActionScript 3.5 mas hoje programo em várias linguagens, principalmente em Ruby, C, Python e Javascript. E aí, partiu? Junte-se a mim no seguinte link do discord para maiores informações! https://discord.gg/6zKrgS Ou me mande uma Mensagem Privada! Abraços!2 pontos -
Forbidden Village | 8.60
Forbidden Village | 8.60
Rogex Joyz e um outro reagiu a DdJs por uma resposta no tópico
2 pontosCave hunt - Forbidden Village. Download: Here Scan: Here Imagens:2 pontos -
TFS 1.3 / Otx3 | Otg Server Global - 11x - 12.40 (SPRITES 13.40) (Updates Diarios)
Otg Server Global Somos o Otg Server, projeto baseado no TFS 1.3 e OTX3.2, Se trata de um servidor baseado no GLOBAL MAP RL. Aqui você encontrará baixo uso de recursos como CPU / memoria, prezamos muito por estabilidade e atualizações constantes. Agradecemos primeiramente ao Tibiaking pela oportunidade nos concedida, somos parceiros oficiais do Tibiaking.com melhor Forum Brasileiro! Especificações : - Global Map FULL RL - Maioria das Quests com Quest Log 100% - Anti Rollback + Auto Restart 100% - Source Otimizada (baixo consumo de CPU e memoria) - Sem Bug de Clonar dinheiro (Npcs Refeitos - Exercise Training 100% - Raids 100% - Monstros 100% Imagens : THAIS TEMPLE FALCONS NEW ASURAS WZ 4,5,6 Downloads : PROJETO OFFICIAL GITHUB: https://github.com/otg-br/global-11x TUTORIAL PARA COMPILAÇÃO: https://github.com/otg-br/global-11x/wiki EXE compilado WIN11 64bits: https://github.com/otg-br/global-11x/blob/main/Executavel compilado win11 64bits.rar GRUPO WHATSAPP OTG SERVER: https://chat.whatsapp.com/EWV3dVvS6nt1em7q23FGu7 Créditos : The Forgotten Server Otland Mark Samman Mattyx Otx Erick Nunes Johncore Otg Server contribuidores OTX contribuidores Otservbr Leu Marcomoa Marson Schneider Leandro Baldissera1 ponto
-
Magnus Challenger
Magnus Challenger
bagulhoescroto reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês! Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda! Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores. Quem quiser pode ver um vídeo comentado de como o sistema funciona: Dito isso vou ensinar vocês como instalar isso no server: Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão) <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele: Terminada a parte da contagem de kill vamos ao NPC em si. Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele: Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo: ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~ Agora aprendendo a configurar: No tasksystem vc pode editar isso daqui: Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server. Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill. No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples: Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores. levelcollect é o level mínimo pra fazer tasks do tipo collect. time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas) bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2) multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador. Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula! Ex: adicionando Morgaroth na tabela de hard local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10]. O restante das tabelas são separadas para o banco de dados das tasks de collect: segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count; Ex: [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos. No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50. Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo. PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.1 ponto -
(Resolvido)Npc que dê outfitte por Quest
Bom , vou compartilhar com você uma gambiarra que fiz aqui a um tempo atras , você vai perceber que é velho pelas gambiarras e identação do código , aqui vamos nós : NPCS XML <?xml version="1.0" encoding="UTF-8"?> <npc name="Tasker" script="data/npc/scripts/task/task.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="167" head="38" body="79" legs="107" feet="114"/> <parameters> <parameter key="message_greet" value="I' have a task for you. [{accept}] or [{premio}] "/> </parameters></npc> SCRIPT local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local storage = 35678 -- monster kill | local sto = 24529 -- don't pick premio | -- | Não mecha nessa gambiarra aqui , só certifique que nenhuma dessas storages sejam usadas em outros sistemas local rage = 24525 -- inicializate contage | local ok = 45651 -- don't inicializate | local exp = 100 -- Quantidade de XP local monster = 100 -- Quantos monstros terá que matar local outfit = { male = 10, -- ID da outfit male female = 11 -- ID da outfit female } if(msgcontains(msg, 'premio')) then if getPlayerStorageValue(cid, sto) == -1 then if getPlayerStorageValue(cid, storage) >= 100 then selfSay("You have finished the task", cid) doPlayerAddExp(cid, exp) doSendMagicEffect(getCreaturePosition(cid), 5) setPlayerStorageValue(cid, rage, -1) setPlayerStorageValue(cid, sto, 1) setPlayerStorageValue(cid, fuck, 1) if getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid, outfit.male, 0) else doPlayerAddOutfit(cid, outfit.female, 0) end else selfSay("You need kill 100 monsters do finish the task", cid) end else selfSay("back from here nigga", cid) end end if(msgcontains(msg, 'accept')) then if getPlayerStorageValue(cid, ok) == -1 then selfSay("You have intialized the task", cid) setPlayerStorageValue(cid, ok, 1) setPlayerStorageValue(cid, rage, 1) else selfSay("You started the task", cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) CREATURESCRIPTS XML <event type="death" name="task" event="script" value="task.lua"/> Na XML do monstro <script> <event name="task"/> </script> Script local key = 35678 local rage = 24525 -- inicializate contage local monster = 100 -- Quantos monstros terá que matar function onDeath(cid, corpse, deathList) local killer = deathList[1] if not isPlayer(killer) then return true end if getPlayerStorageValue(killer, rage) == -1 then return true end setPlayerStorageValue(killer, key, getPlayerStorageValue(killer, key) + 1) doPlayerSendTextMessage(killer, 27, "Monster:: [".. getPlayerStorageValue(killer, key) .."//".. monster .."]") return true end1 ponto
-
(Resolvido)erro In a timer event called from
(Resolvido)erro In a timer event called from
mullino reagiu a peterson18 por uma resposta no tópico
1 pontoPara add a tag RESOLVIDO basta eleger a melhor resposta, clicando no "certinho" no canto esquerdo <<< Segue Imagem:1 ponto -
(Resolvido)Tile que passa apenas 1 player por IP!
(Resolvido)Tile que passa apenas 1 player por IP!
Black Fenix reagiu a FlavioHulk por uma resposta no tópico
1 pontolocal ip = {} local function checkPlayerIp(cid) if not isPlayer(cid) then return end if ip[getPlayerIp(cid)] == true then return true end return false end function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if checkPlayerIp(cid) then doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP") else ip[getPlayerIp(cid)] = true end return true end Tentei uma chance frustrada kk !1 ponto -
(Resolvido)Tile que passa apenas 1 player por IP!
(Resolvido)Tile que passa apenas 1 player por IP!
Black Fenix reagiu a Storm por uma resposta no tópico
1 pontoÈ só você colocar na pos1 e pos2 as coodernadas do local onde o player é enviado ao entrar no teleport , colocar a action no piso em baixo do teleporte e no remeres colocar como uma area de no-logout.1 ponto -
(Resolvido)Tile que passa apenas 1 player por IP!
(Resolvido)Tile que passa apenas 1 player por IP!
leozincorsair reagiu a Storm por uma resposta no tópico
1 pontoAntes , vamos as explicações : POS1 = Coloque as posições na script , igual na imagem que darei de exemplo POS2 = Coloque as posições na script , igual na imagem que darei de exemplo TILE = Tile que vai conter um action ID Movements.XML <movevent type="StepIn" actionid="43358" event="script" value="tileip.lua"/> Movements/scripts function getPlayersInArea(pos1, pos2) playersInArea = {} for x = pos1.x, pos2.x do for y = pos1.y, pos2.y do for z = pos1.z, pos2.z do totalArea = {x = x, y= y, z = z} playerz = getTopCreature(totalArea) if isPlayer(playerz.uid) then table.insert(playersInArea, getPlayerIp(playerz.uid)) end end end end return playersInArea end function onStepIn(cid, item, position, fromPosition) local pos1 = {x = 92, y = 114, z = 7} local pos2 = {x = 98, y = 120, z = 7} local t = getPlayersInArea(pos1, pos2) local value = getPlayerIp(cid) if not isPlayer(cid) then return true end if t then if isInArray(t, value) then doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP") return false end end end1 ponto -
TFS 1.3 / Otx3 | Otg Server Global - 11x - 12.40 (SPRITES 13.40) (Updates Diarios)
TFS 1.3 / Otx3 | Otg Server Global - 11x - 12.40 (SPRITES 13.40) (Updates Diarios)
Chriistian reagiu a malucooo por uma resposta no tópico
1 pontoBaixei aqui, funcionou tudo certinho!!! muito obrigado =]1 ponto -
(Resolvido)Systema de Vip Por players e nao por Account
troque essa linha if vip.hasVip(cid) == FALSE then por if not HaveCharaterAcess(cid) then1 ponto
-
Duvida Rapida
1 pontoSource é todo o codigo fonte de seu trabalho/projeto, é lá onde fica todos os codigos utilizados para executar uma ação/função . Para isso se deve compilar a source , e essa compilação resulta no arquivo .exe que você liga o seu servidor.1 ponto
-
(Resolvido)erro In a timer event called from
(Resolvido)erro In a timer event called from
LeoTK reagiu a FlavioHulk por uma resposta no tópico
1 pontoTentei kk, não manjo de 0.4 kk local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var) setPlayerStorageValue(cid, 12019, 1) addEvent(function(id) if not isPlayer(id) then return end setPlayerStorageValue(id, 12019, -1) end, 500, cid) return doCombat(cid, combat, var) end1 ponto -
Thora Layout Completo
Thora Layout Completo
Killernaldita reagiu a Pedro. por uma resposta no tópico
1 pontoUpdate Accountmanagement Antes. Depois1 ponto -
(Resolvido)[Resolvido] NPC Dark Rodo
(Resolvido)[Resolvido] NPC Dark Rodo
juniorlazza reagiu a Maydana por uma resposta no tópico
1 ponto'Olá amigos, eu tive este mesmo error, e consegui corrigi-lo buscando informações fora do Brasil, em um grupo Africano. Vamos ao que interessa ... .(Ot meu, criando mapa desde o zero 8.60) Para mim, aparecia este Error: [Warning - Groups::getGroup] Group 0 not found. ou [20/01/2015 14:09:06] [shopModule.on Sale] [20/01/2015 14:09:06] Attempt to purchase an item which only sellable ... Eu queria comprar Wands, Runas, Potions... Sempre dava esse error no Forgotten... Vai em: npc/scripts/runes.lua (ou onde for o script do npc) Só subistitui por isso.. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local shopModule = ShopModule:new() npcHandler:addModule(shopModule) shopModule:addBuyableItem({'spellbook'}, 2175, 150, 'spellbook') shopModule:addBuyableItem({'magic lightwand'}, 2163, 400, 'magic lightwand') shopModule:addBuyableItem({'small health'}, 8704, 20, 1, 'small health potion') shopModule:addBuyableItem({'health potion'}, 7618, 45, 1, 'health potion') shopModule:addBuyableItem({'mana potion'}, 7620, 50, 1, 'mana potion') shopModule:addBuyableItem({'strong health'}, 7588, 100, 1, 'strong health potion') shopModule:addBuyableItem({'strong mana'}, 7589, 80, 1, 'strong mana potion') shopModule:addBuyableItem({'great health'}, 7591, 190, 1, 'great health potion') shopModule:addBuyableItem({'great mana'}, 7590, 120, 1, 'great mana potion') shopModule:addBuyableItem({'great spirit'}, 8472, 190, 1, 'great spirit potion') shopModule:addBuyableItem({'ultimate health'}, 8473, 310, 1, 'ultimate health potion') shopModule:addBuyableItem({'antidote potion'}, 8474, 50, 1, 'antidote potion') shopModule:addSellableItem({'normal potion flask', 'normal flask'}, 7636, 5, 'empty small potion flask') shopModule:addSellableItem({'strong potion flask', 'strong flask'}, 7634, 10, 'empty strong potion flask') shopModule:addSellableItem({'great potion flask', 'great flask'}, 7635, 15, 'empty great potion flask') shopModule:addBuyableItem({'instense healing'}, 2265, 95, 1, 'intense healing rune') shopModule:addBuyableItem({'instense healing'}, 2260, 100000, 1, 'blank rune') shopModule:addBuyableItem({'ultimate healing'}, 2273, 175, 1, 'ultimate healing rune') shopModule:addBuyableItem({'magic wall'}, 2293, 350, 3, 'magic wall rune') shopModule:addBuyableItem({'destroy field'}, 2261, 45, 3, 'destroy field rune') shopModule:addBuyableItem({'light magic missile'}, 2287, 40, 10, 'light magic missile rune') shopModule:addBuyableItem({'heavy magic missile'}, 2311, 120, 10, 'heavy magic missile rune') shopModule:addBuyableItem({'great fireball'}, 2304, 180, 4, 'great fireball rune') shopModule:addBuyableItem({'explosion'}, 2313, 250, 6, 'explosion rune') shopModule:addBuyableItem({'sudden death'}, 2268, 350, 3, 'sudden death rune') shopModule:addBuyableItem({'death arrow'}, 2263, 300, 3, 'death arrow rune') shopModule:addBuyableItem({'paralyze'}, 2278, 700, 1, 'paralyze rune') shopModule:addBuyableItem({'animate dead'}, 2316, 375, 1, 'animate dead rune') shopModule:addBuyableItem({'convince creature'}, 2290, 80, 1, 'convince creature rune') shopModule:addBuyableItem({'chameleon'}, 2291, 210, 1, 'chameleon rune') shopModule:addBuyableItem({'desintegrate'}, 2310, 80, 3, 'desintegreate rune') shopModule:addBuyableItemContainer({'bp slhp'}, 2000, 8704, 400, 1, 'backpack of small health potions') shopModule:addBuyableItemContainer({'bp hp'}, 2000, 7618, 900, 1, 'backpack of health potions') shopModule:addBuyableItemContainer({'bp mp'}, 2001, 7620, 1000, 1, 'backpack of mana potions') shopModule:addBuyableItemContainer({'bp shp'}, 2000, 7588, 2000, 1, 'backpack of strong health potions') shopModule:addBuyableItemContainer({'bp smp'}, 2001, 7589, 1600, 1, 'backpack of strong mana potions') shopModule:addBuyableItemContainer({'bp ghp'}, 2000, 7591, 3800, 1, 'backpack of great health potions') shopModule:addBuyableItemContainer({'bp gmp'}, 2001, 7590, 2400, 1, 'backpack of great mana potions') shopModule:addBuyableItemContainer({'bp gsp'}, 1999, 8472, 3800, 1, 'backpack of great spirit potions') shopModule:addBuyableItemContainer({'bp uhp'}, 2000, 8473, 6200, 1, 'backpack of ultimate health potions') shopModule:addBuyableItemContainer({'bp ap'}, 2002, 8474, 2000, 1, 'backpack of antidote potions') shopModule:addBuyableItem({'wand of vortex'}, 2190, 500, 1, 'wand of vortex') shopModule:addBuyableItem({'wand of dragonbreath'}, 2191, 1000, 1, 'wand of dragonbreath') shopModule:addBuyableItem({'wand of decay'}, 2188, 5000, 1, 'wand of decay') shopModule:addBuyableItem({'wand of draconia'}, 8921, 7500, 1, 'wand of draconia') shopModule:addBuyableItem({'wand of cosmic energy'}, 2189, 10000, 1, 'wand of cosmic energy') shopModule:addBuyableItem({'wand of inferno'}, 2187, 15000, 1, 'wand of inferno') shopModule:addBuyableItem({'wand of starstorm'}, 8920, 18000, 1, 'wand of starstorm') shopModule:addBuyableItem({'wand of voodoo'}, 8922, 22000, 1, 'wand of voodoo') shopModule:addBuyableItem({'snakebite rod'}, 2182, 500, 1, 'snakebite rod') shopModule:addBuyableItem({'moonlight rod'}, 2186, 1000, 1, 'moonlight rod') shopModule:addBuyableItem({'necrotic rod'}, 2185, 5000, 1, 'necrotic rod') shopModule:addBuyableItem({'northwind rod'}, 8911, 7500, 1, 'northwind rod') shopModule:addBuyableItem({'terra rod'}, 2181, 10000, 1, 'terra rod') shopModule:addBuyableItem({'hailstorm rod'}, 2183, 15000, 1, 'hailstorm rod') shopModule:addBuyableItem({'springsprout rod'}, 8912, 18000, 1, 'springsprout rod') shopModule:addBuyableItem({'underworld rod'}, 8910, 22000, 1, 'underworld rod') local items = {[1] = 2190, [2] = 2182, [5] = 2190, [6] = 2182} function 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, 'first rod') or msgcontains(msg, 'first wand')) then if(isSorcerer(cid) or isDruid(cid)) then if(getPlayerStorageValue(cid, 30002) <= 0) then selfSay('So you ask me for a {' .. getItemNameById(items[getPlayerVocation(cid)]) .. '} to begin your advanture?', cid) talkState[talkUser] = 1 else selfSay('What? I have already gave you one {' .. getItemNameById(items[getPlayerVocation(cid)]) .. '}!', cid) end else selfSay('Sorry, you aren\'t a druid either a sorcerer.', cid) end elseif(msgcontains(msg, 'yes')) then if(talkState[talkUser] == 1) then doPlayerAddItem(cid, items[getPlayerVocation(cid)], 1) selfSay('Here you are young adept, take care yourself.', cid) setPlayerStorageValue(cid, 30002, 1) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then selfSay('Ok then.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Att: Matheusz Maydana Facebook': https://www.facebook.com/mattheuszXmaydana1 ponto -
(Resolvido)Spell para ficar intocavel
(Resolvido)Spell para ficar intocavel
ZeeroBR reagiu a xWhiteWolf por uma resposta no tópico
1 pontosó muda a spell e tira a condition invisible: local config = { storage = 3482101, cooldown = 30, --- tempo entre um uso e outro duration = 5, --- duração effect1 = 29 -- efeito que sai ao falar a spell } function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, 55695) >= config.cooldown then setPlayerStorageValue(cid, 55695, os.time()) doSendMagicEffect(getCreaturePosition(cid), config.effect1) setPlayerStorageValue(cid, config.storage, os.time() + config.duration) doCreatureSay(cid,"UNTOUCHABLE!!!", 19) doPlayerSendTextMessage(cid, 27, "You have now ".. config.duration .." seconds of invulnerability.") else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55695))).." seconds.") return false end return true end1 ponto -
(Resolvido)Spell para ficar intocavel
(Resolvido)Spell para ficar intocavel
Gabrielx17 reagiu a xWhiteWolf por uma resposta no tópico
1 ponto@skailord, você não pode dar up no tópico dos outros a não ser que tenha passado 24 hrs. Leia as regras spells\scripts\especiais\invencible.lua local config = { storage = 3482101, cooldown = 30, --- tempo entre um uso e outro duration = 5, --- duração effect1 = 29 -- efeito que sai ao falar a spell } local outfit = createConditionObject(CONDITION_INVISIBLE, config.duration * 1000, false) function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, 55695) >= config.cooldown then setPlayerStorageValue(cid, 55695, os.time()) doSendMagicEffect(getCreaturePosition(cid), config.effect1) setPlayerStorageValue(cid, config.storage, os.time() + config.duration) doCreatureSay(cid,"UNTOUCHABLE!!!", 19) doAddCondition(cid, outfit) doPlayerSendTextMessage(cid, 27, "You have now ".. config.duration .." seconds of invulnerability.") else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55695))).." seconds.") return false end return true end spells.xml <instant name="testeTK" words="naruto3" lvl="16" mana="500" prem="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="especiais/invencible.lua"> </instant> creaturescripts\scripts\login.lua: ---------- Invencible ---------------- registerCreatureEvent(cid, "invencible") if getPlayerStorageValue(cid, 3482101) ~= 0 then setPlayerStorageValue(cid, 3482101, 0) end creaturescripts.xml: <event type="statschange" name="invencible" event="script" value="invencible.lua"/> creaturescripts\scripts\invencible.lua local config = { storage = 3482101, effect1 = 2 --- efeito ao ser atacado estando invulnerável } function onStatsChange(cid, attacker, type, combat, value) if value >= 1 and (type == STATSCHANGE_HEALTHLOSS or (getCreatureCondition(cid, CONDITION_MANASHIELD) and type == STATSCHANGE_MANALOSS)) then if getPlayerStorageValue(cid,config.storage) - os.time() > 0 and isCreature(attacker) then doSendMagicEffect(getCreaturePosition(cid), config.effect1) doSendAnimatedText(getCreaturePosition(cid), "0", 180) return false end end return true end Usei o mesmo storage da outra spell que fiz pra vc uchihagaeshi, mude o storage em todos os scripts ;]1 ponto