-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
dúvida Ajudar A Completar Este Script (Ring Atacck Target Com Sd)
pergunta respondeu ao Bennyhappy de Oneshot em Scripts
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT,CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7) local function doCombatWithDelay(cid, combat, var, itemid) doCombat(cid, combat, var) if getPlayerSlotItem(cid, CONST_SLOT_RING) == itemid then addEvent(doCombatWithDelay, 1 * 1000, cid, combat, var, itemid) end end function onEquip(cid, item, slot) local target = getCreatureTarget(cid) if(target == 0) then return true end doCombat(cid, combat, numberToVariant(target)) addEvent(doCombatWithDelay, 1 * 1000, cid, combat, numberToVariant(target), item.itemid) end function onDeEquip(cid, item, slot) doSendMagicEffect(getThingPosition(cid), CONST_ME_BLOCKHIT) return true end -
dúvida Ajudar A Completar Este Script (Ring Atacck Target Com Sd)
pergunta respondeu ao Bennyhappy de Oneshot em Scripts
Totalmente errado. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT,CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7) function onEquip(cid, item, slot) local target = getCreatureTarget(cid) if(target == 0) then return true end return doCombat(cid, combat, numberToVariant(target)) end function onDeEquip(cid, item, slot) doSendMagicEffect(getThingPosition(cid), CONST_ME_BLOCKHIT) return true end -
VÍDEO DE FUNCIONAMENTO
-
Nome: Mega War's Spirit Gems Tipo: Action Autor: Oneshot Grande Éks. Uma coisa que eu adoro fazer quando estou sem nada para fazer õ_o É reproduzir sistemas de servidores/projetos famosos para testar atÉ onde posso chegar com a programação Lua. Notei que muita gente cobiça pelo sistema de Spirit Gems do servidor Mega War, então eu resolvi criar uma rÉplica não tão fiel desse sistema com base no que há disponível no site deles. Lá diz que são itens que adicionam certos atributos por tempo. Como eu achei muito simples, eu adicionei algumas frescurinhas, um efeito mágico sendo enviado enquanto os atributos que o item dá durarem. O sistema está bem fácil de configurar e intuitivo e isso É o que importa. Vamos lá. Abra seu arquivo items.xml e procure por isto: <item id="2153" article="a" name="violet gem"> <attribute key="weight" value="30"> </item> <item id="2154" article="a" name="yellow gem"> <attribute key="weight" value="30"> </item> Substitua por isso: <item id="2153" article="a" name="knight spirit gem"> <attribute key="description" value="Free the strongest medieval warrior's spirit that is inside you. (Melee +12%, Speed +40)"> <attribute key="weight" value="30"> </item> <item id="2154" article="a" name="paladin spirit gem"> <attribute key="description" value="Free the strongest medieval archer's spirit that is inside you. (Distance +12%, Speed +40)"> <attribute key="weight" value="30"> </item> Mais uma vez, procure por isso: <item id="2156" article="a" name="red gem"> <attribute key="weight" value="30"> </item> <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10"> </item> <item id="2158" article="a" name="blue gem"> <attribute key="weight" value="100"> </item> Substitua por isso: <item id="2156" article="a" name="sorcerer spirit gem"> <attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)"> <attribute key="weight" value="30"> </item> <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10"> </item> <item id="2158" article="a" name="druid spirit gem"> <attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)"> <attribute key="weight" value="100"> </item> Agora, crie um arquivo chamado gems.lua na pasta data/actions/scripts e adicione isso: local GemsConfig = { [2153] = { vocations = {4, 8}, effect = CONST_ME_EXPLOSIONAREA, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SKILL_MELEEPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2154] = { vocations = {3, 7}, effect = CONST_ME_HOLYDAMAGE, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SKILL_DISTANCEPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2156] = { vocations = {1, 5}, effect = CONST_ME_MORTAREA, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2158] = { vocations = {2, 6}, effect = CONST_ME_SMALLPLANTS, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } } } local Conditions = {} for itemid, info in pairs(GemsConfig) do Conditions[itemid] = {} for condition, parameters in pairs(info.conditions) do local new = createConditionObject(condition) for parameter, value in pairs(parameters) do setConditionParam(new, parameter, value) end table.insert(Conditions[itemid], new) end end local function doShowGemAura(cid, type) local position = getThingPosition(cid) doSendMagicEffect(position, type) if isCreature(cid) then if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then addEvent(doShowGemAura, 1 * 1000, cid, type) end end return true end function onUse(cid, item, fromPosition, itemEx, toPosition) if not GemsConfig[item.itemid] then return false end if not isInArray(GemsConfig[item.itemid].vocations, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "You cannot use this spirit gem.") end if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then return false end for _, condition in pairs(Conditions[item.itemid]) do doAddCondition(cid, condition) end doCreatureSay(cid, "AAAAH! I FEEL THE POWER!", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, GemsConfig[item.itemid].effect) addEvent(doShowGemAura, 1 * 1000, cid, GemsConfig[item.itemid].effect) doRemoveItem(item.uid, 1) return true end Abra seu arquivo actions.xml e adicione isso: <action itemid="2153;2154;2156;2158" event="script" value="gems.lua"/> Caso você queria adicionar a restrição do utito tempo enquanto o efeito da spirit gem durar, abra o arquivo do utito tempo, apague tudo e coloque isso: Ele normalmente está em data/spells/scripts/support. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function onCastSpell(cid, var) if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return doCombat(cid, combat, var) end Não sei se está 100% fiel ao sistema do Mega War, uma vez que não pagarei para provar isso. Um abração.
-
Se não localizou nada, temos o nosso problema. Como não há nenhum script associado ao uniqueid do baú usado na quest, o sistema executa o padrão - abrir um baú vazio para armazenar coisas. O único modo de corrigir isso, é procurar se o servidor possui os scripts e então adicionar a chave no actions.xml ou então baixar outro servidor. Abraço.
-
Você andou trocando a versão do seu servidor? Se sim, o problema é simples, você esqueceu de registrar todas as uniqueids no actions.xml Caso você não tenha trocado, siga o que os colegas acima disseram, abra seu actions.xml em um editor de texto qualquer, aperte CTRL+F e procure por isso. uniqueid="10000" Se não houver nenhum resultado, confirma o fato de que os baús não possuem script para funcionar.
-
dúvida Ot Caindo Sozin, Quando Ataka Com Tal Arma, Ou Tal Magia
pergunta respondeu ao lfelipebsilva05 de Oneshot em Scripts
Verifique se as skills e maglevel dos personagens com essas novas vocações assumem valores acima de 500 no banco de dados. Poste também, se possível, o script da "sword vip do ot" -
Não gostei, um tutorial muito fraco na base do "decoreba" - são esses que mandam criar arquivo, colar e pronto.
-
dúvida Ot Caindo Sozin, Quando Ataka Com Tal Arma, Ou Tal Magia
pergunta respondeu ao lfelipebsilva05 de Oneshot em Scripts
Conheço esse erro. Isso acontece quando o personagem que usou a arma ou a magia possui skill ou maglevel exageradamente alto. Veja nas tais vocações "mixed", você não mudou as fórmulas de ganho de skill e maglevel, sem saber o que estava fazendo. -
function onUse(cid, item, fromPosition, itemEx, toPosition) local maglevel, level = getPlayerMagLevel(cid), getPlayerLevel(cid) local formula = 800 if maglevel < 1 then doSendMagicEffect(toPosition, CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMAGICLEVEL) return true end if not isPlayer(itemEx.uid) then doSendMagicEffect(toPosition, CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_CANONLYUSETHISRUNEONCREATURES) return true end doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) doCreatureAddHealth(itemEx.uid, formula) doCreatureAddMana(itemEx.uid, formula) if itemEx.uid == cid then doCreatureSay(itemEx.uid, "Aaahh...", TALKTYPE_ORANGE_1) end return true end
-
Aparece algum erro no console do servidor? E também há um erro quanto a chamada de uma função no script: doSendMAgicEffect(frompos,2) Essa função será acusada como inexistente, pois Lua é uma linguagem caso-sensitivo. doSendMagicEffect(frompos, 2) Já essa função é existente e o script será executado normalmente.
-
dúvida Comando Que Deleta Char, E Função Que Retira Todos Os Item Do Player Quando Ele Morre
pergunta respondeu ao eduardo190696 de Oneshot em Scripts
Só registrar o creaturescript no login.lua e no creaturescripts.xml. function onDeath(cid, corpse, deathList) if(isPlayer(cid)) then db.query("DELETE FROM `player_items` WHERE `player_id` = ".. getPlayerGUID(cid)) end return true end -
getCreatureTarget(cid) vai retornar um número gigante e grotesco que o sistema entende por ser o alvo do jogador. Mas se você fizer isso: getThingPosition(getCreatureTarget(cid)) Seus problemas estão resolvidos. Abraços.
-
pedido [Pedido]Script Que Criatura Não Consegue Andar
pergunta respondeu ao thiagozika157 de Oneshot em Scripts
speed="0" No arquivo XML do monstro em questão. Embora acho que ele ainda vá se mover. Teste. -
local function isWalkable(position, cid) position.stackpos = 0 if getTileThingByPos(position).uid ~= 0 then local tile = getTileInfo(position) if tile.protection == false and tile.house == false and getTopCreature(position).uid == 0 and doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then return true end end return false end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(cid, var) if isWalkable(getCreatureLookPosition(cid), cid) then doTeleportThing(cid, getCreatureLookPosition(cid)) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return doCombat(cid, combat, var) end
-
Poste qual servidor você usa, o link do tópico ou download.
-
Estou planejando limpar um pouco o código e ver se posso melhorar ele em alguns aspectos. Quem estiver com esse erro do: Invalid data type Por favor, passe o link do tópico onde baixou o servidor que está, atualmente, usando.
-
Por um lado não vai te atrapalhar em nada, seu servidor não irá dar nenhum erro crítico por causa desses dois pequenos erros. Por outro lado, Tyoric não vai vender um certo item que ele deveria vender e os jogadores não irão conseguir comprar a casa Forgotten Headquarter <Flat 1, Area 42>
-
Npc Que Voce Tem Que Voltar Depois Qual a necessidade de criar um segundo tópico com o mesmo pedido?
-
Tem sim. As runas que forem magias instantâneas você faz como Actions e as runas que forem magias de alvo, você faz como... runas mesmo. Um abraço.
-
Procure mais uma vez, só que desta vez na pasta mods e então é só deletar o arquivo safadinho que se esconde de você.
-
Eu poderia chegar aqui e falar simplesmente: "Isso aí é nas sources, cara" Te explicarei, mais ou menos, como funciona todo o processo de execução de um servidor. Quando você abre seu servidor e algum jogador entra nele, o servidor processa as informações do jogador e as armazena em espaços da memória. Só que os espaços tem um tamanho-limite e esse tamanho é definido pelo programador quando ele escreve o código, as sources de seu servidor e declara as variáveis. Ou seja essas variáveis poderão assumir valores máximos conforme o tamanho de memória que foi declarado para ela. Em outras palavras, veja isso: uint32_t getLevel() const {return level;} uint64_t getExperience() const {return experience;} Aqui estão as funções de player.h que retornam as informações level e experience do jogador. Vamos dizer que a função foi declarada com "tamanho 2" e o level do jogador seja 3, a função simplesmente vai armazenar o que pode na memória e ignorar o resto, ou seja ela vai retornar 2. Enfim, para fazer o que você quer, são necessárias pequenas alterações ambientadas na parte C++ de um servidor.
-
Para começar a criação deste NPC, vou te apresentar uma função nativa Lua que guarda o tempo em segundos desde a criação da linguagem, essa função se chama os.time(). Levando em consideração que você quer comparar dois intervalos de tempos distintos que distam em quatro horas. Precisamos armazenar o tempo local acrescido de quatro horas em segundos em uma variável, no caso, uma célula em seu banco de dados que você, comumente, chama por storage. Então é só chamar essa variável em uma comparação entre o valor dela e o tempo local Você teria, então, que trabalhar com dois storages: Um que irá marcar o tempo e outro que irá marcar o estado das missões que o NPC dá. Vamos criar um algoritmo para a inteligência artificial do seu NPC: Simples assim. Espero que isso ajude no desenvolvimento do seu NPC.
-
Não, nenhum. O Dev-C++ que passei possui bibliotecas auxiliares para compilação em x64, mas você pode continuar a compilar em x96
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.