Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/10/16 em todas áreas
-
[OLDClient-DLL] OrochiElf
jeanflamengo e um outro reagiu a Tony Araujo por um tópico no fórum
Fala aê pessoal, eu ultimamente resolvi entender um pouco mais do OLDClient e do DLL Injection. Demorei um tempo porém consegui resultados, mas agora estou sem idéia do que posso fazer, por hora só fiz isso; Estou pensando em fazer um [OT-OLDClient], ou melhor dizendo, um OLDClient que tenha as mesmas funções modules que existe no OTClient. Espero sugestões do que fazer kkk >pica relatada do meu feito (quem lê GT entende.)2 pontos -
Forge System
Arisen Trapzer reagiu a Oneshot por um tópico no fórum
ADVANCED FORGE SYSTEM O SISTEMA DE CRIAÇÃO DE ITENS PARA SEU SERVIDOR Creio que muitos já conhecem o sistema de forja criado por mim, acontece que o código já estava um pouco obsoleto, então resolvi reescrever ele do 0. Simplesmente consiste em um sistema de criação de itens avançado que ressuscita um pouco do RPG perdido nos servidores de hoje em dia. O jogador poderá criar itens através de forja, agindo como um verdadeiro ferreiro medieval. Adiciona itens em cima de uma bigorna previamente colocada no mapa e com um martelo cria um item totalmente novo. CARACTERÍSTICAS DA VERSÃO FINAL: - Configuração intuitiva e fácil de compreender; - Mini-tutorial auxiliando criação de novas receitas; - Receitas podem conter até 250 itens diferentes com suas respectivas quantidades; - Sistema inteligente que identifica uma receita em qualquer ordem; - Código totalmente orientado a objetos; - Possibilidade de configurar diferentes requerimentos, diferentes skills, magic level e level Há dois modos de instalar o Advanced Forge System, o primeiro é seguir os passos deste tópico e o segundo e baixar pasta data/ anexada no tópico com os arquivos em seus respectivos diretórios, precisando apenas o registro das chaves nos arquivos XML. Escolha o modo que mais convém a você. Crie um arquivo em data/lib chamado forgesystem.lua e cole o conteúdo abaixo: --[[ ADVANCED FORGE SYSTEM FINAL Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- RecipeHandler = { itemtype = 0, items = {}, level = 1, maglevel = 0, skills = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0} } Forge = { type = nil, position = nil, magicEffect = CONST_ME_MAGIC_GREEN, messages = { class = MESSAGE_STATUS_DEFAULT, success = "You have successfully forged a %s.", needskill = "You don't have enough %s to create a %s.", needlevel = "You need level %s to create a %s.", needmaglevel = "You need magic level %s to create a %s." } } function RecipeHandler:new(itemtype, items, level, maglevel, skills) local obj = { itemtype = (itemtype or 0), items = (items or {}), level = (level or 1), maglevel = (maglevel or 0), skills = (skills or {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0}) } table.insert(Recipes, obj) return setmetatable(obj, {__index = self}) end function RecipeHandler:setItem(itemtype) self.itemtype = (itemtype or 0) end function RecipeHandler:setRecipe(...) self.items = {...} end function RecipeHandler:setRecipeItem(itemid, amount) table.insert(self.items, {itemid, amount}) end function RecipeHandler:setSkill(skillid, value) self.skills[skillid] = value end function RecipeHandler:setLevel(value) self.level = value end function RecipeHandler:setMagLevel(value) self.maglevel = value end function RecipeHandler:check(position) local match = false for n, item in ipairs(self.items) do local thing = getTileItemById(position, item[1]) if thing.uid > 0 and math.max(1, thing.type) >= item[2] then if n == #self.items then match = true end else break end end return match end function RecipeHandler:get(position) if self:check(position) == true then return setmetatable({type = self, position = position}, {__index = Forge}) end return false end function Forge:create(cid) if self.type.itemid == 0 then print("[FORGE SYSTEM - ERROR] ATTEMPT TO CREATE A RECIPE ITEMID 0") return end local status = true if(cid) then if getPlayerLevel(cid) < self.type.level then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needlevel:format(self.type.level, getItemNameById(self.type.itemtype))) return end if getPlayerMagLevel(cid) < self.type.maglevel then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needmaglevel:format(self.type.maglevel, getItemNameById(self.type.itemtype))) return end for skillid, value in pairs(self.type.skills) do if getPlayerSkillLevel(cid, skillid) < value then status = false doPlayerSendTextMessage(cid, self.messages.class, self.messages.needskill:format(SKILL_NAMES[skillid], getItemNameById(self.type.itemtype))) break end end end if status == true then for _, item in ipairs(self.type.items) do local thing = getTileItemById(self.position, item[1]) doRemoveItem(thing.uid, item[2]) end doSendMagicEffect(self.position, self.magicEffect) doPlayerSendTextMessage(cid, self.messages.class, self.messages.success:format(getItemNameById(self.type.itemtype))) doCreateItem(self.type.itemtype, self.position) end end dofile(getDataDir() .."/lib/recipes.lua") Crie um arquivo em data/lib chamado recipes.lua e adicione o conteúdo abaixo: ---------------------------------------- -----** TUTORIAL DE CONFIGURAÇÃO **----- ---------------------------------------- --[[ O 'ADVANCED FORGE SYSTEM' é muito fácil e intuitivo de configurar, você só precisa chamar a função RecipeHandler:new(...), sendo que você já configurar os atributos da receita nela ou usar outras funções para isso. Por exemplo, quero criar uma Magic Sword que precise de 100 Gold Nuggets. RecipeHandler:new(2400, {{2157, 100}}) Ou então Magic_Sword = RecipeHandler:new() Magic_Sword:setItem(2400) Magic_Sword:setRecipe({2157, 100}) Funções do Sistema: RecipeHandler:new(itemtype, items, level, maglevel, skills) --> Cria uma nova instância de forja. RecipeHandler:setItem(itemtype) --> Atribui um certo itemid como resultado da receita. RecipeHandler:setRecipe(recipe) --> Atribui uma receita. RecipeHandler:setRecipeItem(itemid, amount) --> Adiciona um itemid e sua quantidade a receita. RecipeHandler:setSkill(skillid, value) --> Atribui um valor necessário de uma certa skill para poder criar a receita. RecipeHandler:setLevel(value) --> Atribui o level necessário para criar uma receita. RecipeHandler:setMagLevel(value) --> Atribui o magic level necessário para criar uma receita. ]]-- --[[ Este é um exemplo de receita usando algumas funções. É uma Magic Sword (ITEMID: 2400) que precisa de 100 Gold Nuggets (ITEMID: 2157), além disso, o personagem que tentar forjar, precisa ter Level 100 e Sword Fighting 50. ]]-- Recipes = {} magicsword = RecipeHandler:new() magicsword:setItem(2400) magicsword:setRecipeItem(2157, 100) magicsword:setLevel(100) magicsword:setSkill(2, 50) Agora em data/actions/scripts, crie um arquivo chamado iron_hammer.lua e adicione o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) local recipe = nil for _, v in ipairs(Recipes) do recipe = v:get(toPosition) if(recipe ~= false) then break end end if(recipe) then recipe:create(cid) else doPlayerSendCancel(cid, "This is not a valid recipe.") end return true end E por fim em actions.xml, adicione a seguinte linha: <action itemid="4846" event="script" value="iron_hammer.lua"/> OPCIONAL - TALKACTION A talkaction abaixo mostra ao jogadoras receitas configuradas no servidor que ele pode fazer. Em data/talkactions/scripts, crie um arquivo chamado recipes.lua e adicione o conteúdo abaixo: function onSay(cid, words, param, channel) local ret = {} local msg = " ADVANCED FORGE SYSTEM\n" for _, recipe in ipairs(Recipes) do local skills = true for skillid, value in pairs(recipe.skills) do if getPlayerSkillLevel(cid, skillid) < value then skills = false break end end if skills == true then if getPlayerLevel(cid) >= recipe.level and getPlayerMagLevel(cid) >= recipe.maglevel then table.insert(ret, {recipe, true}) else table.insert(ret, {recipe, false}) end else table.insert(ret, {recipe, false}) end end for _, recipe in ipairs(ret) do msg = msg .."\nRecipe for ".. getItemNameById(recipe[1].itemtype) ..":\n\n" if recipe[2] == true then for _, item in ipairs(recipe[1].items) do msg = msg .."* ".. getItemNameById(item[1]) .." [".. math.min(item[2], math.max(0, getPlayerItemCount(cid, item[1]))) .."/".. item[2] .."]\n" end else msg = msg .."[LOCKED]\n" end end doShowTextDialog(cid, 2555, msg) return true end Em data/talkactions/talkactions.xml, adicione a linha: <talkaction words="/recipes" event="script" value="recipes.lua"/> Siga as instruções para configuração de novas receitas. Em breve vídeo de funcionamento Advanced Forge System.rar1 ponto -
Akatsuki System + Heart System Introdução - tava vendo muitas pessoas precisando desses dois sistema então resolvi criar o meu próprio. - Não ta igual ao do NTOUltimate pois nunca joguei esse servidor. O que tem no Akatsuki system 1.0? - Verifica se sua vocação pode fazer parte da akatsuki - Verificar sua vocação e adiciona outra diferente? - Troca de outfit dependendo da sua vocação - Da bonus de hp e mp - Adicionar o nome [Akatsuki] no seu nick exemplo [Akatsuki] RigBy - Aplica uma storage quando você entra pra akatsuki (com isso da pra você fazer bonusXp) - storage é 85798723243 valor 1 O que tem no Heart System - Ele só te da o coração se você for acima de tal level - adiciona o nome da pessoa no coração Vamos la a script Npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[Akatsuki] Tobi" script="data/npc/scripts/AkatsukiSystem.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hello You who joins {akatsuki}?"/> </parameters> </npc> Npc/Script/AkatsukiSystem.lua -- Do not remove the credits -- -- [NPC] Akatsuki System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- 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 level = 1 -- Level preciso pra entra para akatsuki local itemid = 5943 -- id do coração local quantidade = 6 -- quantos hearts e preciso local bonushp = 300000 -- quanto de bonus de life vai ganha local bonusmp = 30000 -- quanto de bonus de mana vai ganha local config = { --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, } 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, 'akatsuki') then if getPlayerVocation(cid) ~= config then if getPlayerStorageValue(cid, 85798723243) == -1 then if getPlayerLevel(cid) >= level then selfSay('Are you sure you want to join the Akatsuki?.', cid) talkState[talkUser] = 1 else selfSay('You there and very weak, vain talk to you when you have level '..level..'.', cid) end else selfSay('You already part of the akatsuki!', cid) end else selfSay('Do not need you now!', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, 'yes') then selfSay('To prove their loyalty, you have to bring '..quantidade..' {hearts}.', cid) talkState[talkUser] = 2 end if talkState[talkUser] == 2 and msgcontains(msg, 'hearts') then if getPlayerItemCount(cid, 5943) >= 6 then local voc = config[getPlayerVocation(cid)] doPlayerSetVocation(cid, voc[1]) local outfit = {lookType = voc[2]} doCreatureChangeOutfit(cid, outfit) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+bonushp) setCreatureMaxMana(cid, getCreatureMaxMana(cid)+bonusmp) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerRemoveItem(cid, 5943, 6) doCreatureAddMana(cid, getCreatureMaxMana(cid)) setPlayerStorageValue(cid,85798723243,1) db.executeQuery("UPDATE `players` SET `name` = '[Akatsuki] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 5*1000, cid, true) doPlayerSendTextMessage(cid,25,'You will be kicked in 5 seconds to enter the akatsuki!') selfSay('Congratulations now you are part of akatsuki.', cid) talkState[talkUser] = 0 else selfSay('No use to fool me, you do not have '..quantidade..' hearts, goes behind.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Heart System Creaturescript/script/heartsystem -- Do not remove the credits -- -- [CREATURESCRIPT] Heart System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onKill(cid, target, lastHit) local item = 5943 -- id do coração local level = 300 -- level necessário para tira o coração if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(target) >= level then local add = doPlayerAddItem(cid, item, 1) doItemSetAttribute(add, "description","Esse coração é de "..getPlayerName(target).." que foi morto no level "..getPlayerLevel(target).." por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce Mato " ..getPlayerName(target).. ".") doSendMagicEffect(getPlayerPosition(cid),12) end end return true end Creaturescript.xml Tag <event type="kill" name="HeartSys" event="script" value="heartsystem.lua"/> Podem comenta duvidas, opiniões ou melhoramento para que haja a versão 2.01 ponto
-
ShowOFF PsyMcKenzie
Furabio reagiu a PsyMcKenzie por um tópico no fórum
E ai galera, vou começar esse ShowOFF, espero que gostem e que me deem dicas para que eu possa melhorar. :biggrin: Outra opção de ground. Loja. DP.1 ponto -
ShowOFF PsyMcKenzie
Administrador reagiu a PsyMcKenzie por um tópico no fórum
Atualizando. @Daniel o que achou? To meio sem tempo, hoje que consegui entrar.1 ponto -
[Encerrado]UntraxBR - A nova era. Junte-se a nos!
Administrador reagiu a Lumus por um tópico no fórum
Valeu dani!! Uma nova "cidade"1 ponto -
Eu uso netbeans quando vou criar/editar sites, e aquilo é uma maravilha quando tu pega aquele código nojento que nem dá pra ver um espaço ai aperta ctrl + shift + f e vê tudo lindamente identado HAHAHAHA1 ponto
-
[Encerrado]UntraxBR - A nova era. Junte-se a nos!
Lumus reagiu a Administrador por um tópico no fórum
Updates legais! Cuidado com os formatos e detalhes perto de fogo Lumus hehe1 ponto