Histórico de Curtidas
-
Ragnar Lothbrook deu reputação a Reds em Chuva de flechas (spell)Eae galera, me deram ideia de uma spell bem legal então vou compartilhar com vocês, ela se trata de uma chuva de flechas.
Código:
no spells.xml:
Um gif da spell:
http://giphy.com/gifs/r0DNAlUJKUxeo
-
Ragnar Lothbrook recebeu reputação de Splash em (Resolvido)Ninguém consegue acessar meu site do OT.Bom pessoal, estou com um problema um pouco sério.
Abri um OT na minha maquina, com internet compartilhada. Mas eu liberei umas portas no roteador, que acabam fixando meu IP. Quando abro o OT, eu entro normalmente, assim como qualquer pessoa, sem hamachi nem nada. Apenas o IP normal. Mas no meu site ninguém consegue entrar, além de mim. Eu uso Xampp, e minha maquina não tem modem normal, o modem é o ARRIS TG862, da NET COMBO, para internet de 30 mega+. Então não tem modem fixo. O modem ja é roteador. Ja tentei de tudo. Liberei as portas 443, 4499, 80 e 8090 no firewall e no modem, mas o site continua off pra todo mundo. Apenas eu consigo acessar.
Ja mudei tudo que era possivel mudar nas configurações do xampp, coloquei port 8090, 80, 8080... Todas as possibilidades que encontrei. Mas não consegui concertar.
Se alguém puder me ajudar, eu agradeceria muito. É um pouco urgente.
Agradeço desde já.
(rep+ pra solução)
-
Ragnar Lothbrook recebeu reputação de Poke Hand em [Pedido] Quest que dá spellMe mantenha informado caso dê algum erro @Poke Hand.
-
Ragnar Lothbrook recebeu reputação de CAUAM em [PEDIDO] Clean Map@CAUAM
Em globalevent.XML:
Em globalevent/scripts. Copie qualquer script, renomeie para 'clean' que esteja no formato .LUA. Adicione dentro:
-
Ragnar Lothbrook recebeu reputação de trancx123 em alavanca Anihi, varrer monstros remanescentesConfigure a gosto @trancx123
-
Ragnar Lothbrook recebeu reputação de moskitinho em [Dúvida] Script teleport@Felipe Lotz
NPC
Tile da POI
-
Ragnar Lothbrook recebeu reputação de moskitinho em [Dúvida] Action Anihilator 8.6Starting é a posição onde o player deve estar ao puxar a alavanca. Ending é a posição para onde ele vai ao puxar a alavanca.
-
Ragnar Lothbrook deu reputação a Mathwsz em [AJUDA REP++]ALAVANCA QUE TELEPORTA TODOS OS PLAYERS QUE ESTIVE EM UMA SALA...Vou ver isso direitinho, mas não garanto nada! O script com limite de player eu tenho na mão, porém não seria o que você pediu! Vou ver aqui.
-
Ragnar Lothbrook deu reputação a Rudkiller em [action]Desintegrate Rune que remove magic wall!Saudações, visitantes do tópico.
Hoje trago pra vocês um script de action que vai fazer com que suas Desintegrate Runes removam magic walls!
Tem que ser por action, portanto removam a linha da desintegrate rune em sua spells.xml (a linha da runa, não da spell que cria/encanta ela).
Em
data\actions\scripts
crie um arquivo com extensão .lua e adicione o seguinte conteúdo:
function onUse(cid, item, frompos, item2, topos)
local playermagiclevel = getPlayerMagLevel(cid)
if playermagiclevel < 5 then
doPlayerSendTextMessage(cid,24,'You need to be magic level 5 or higher to use desintegrate runes!')
elseif isCreature(item2.uid) == FALSE and isMoveable(item2.uid) == TRUE then
doRemoveItem(item2.uid)
doRemoveItem(item.uid)
doSendMagicEffect(topos, CONST_ME_GIFT_WRAPS)
doSendDistanceShoot(getCreaturePosition(cid), topos, CONST_ANI_ENERGY)
return 1
elseif item2.uid == cid then
doPlayerSendTextMessage(cid,24,'You can not use desintegrate runes on yourself!')
elseif item2.itemid == 1497 then
doRemoveItem(item2.uid)
doRemoveItem(item.uid)
doSendMagicEffect(topos, CONST_ME_GIFT_WRAPS)
doSendDistanceShoot(getCreaturePosition(cid), topos, CONST_ANI_ENERGY)
else
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
return 0
end
end
--[[
Desintegrate Rune (action) por Rudkiller.
Com esse script a desintegrate não requer level para ser usada, apenas magic level.
A função da desintegrate foi modificada para que ela possa ser usada a qualquer distância, tenha um efeito de tiro e possa remover magic walls!
Não se esqueça do actions.xml: <action itemid="2310" script="nome_do_seu_script.lua" allowfaruse="1"/>
]] O resto está explicado no próprio script. Lembrem-se vocês podem mudar o limite de magic level apenas trocando o número dessa linha:
if playermagiclevel < 5 then
Olhem o vídeo demonstrando o funcionamento da runa:
https://www.youtube.com/watch?v=Nijuq4dIB6k&feature=youtu.be
(gravei e postei esse vídeo só pra mostra pra vocês o bagulho )
-- Testado em Alissow Server 8.54 Talvez funcione em todas as versões do 8.4 ao 8.54. Lembre-se: A runa vai ser removida, mesmo que ela tenha charges!
Se divirtam!
-
Ragnar Lothbrook recebeu reputação de Magonnite em [PEDIDO] Script para ver se ja tem player dentro da quest (area)Tenho uma quest parecida com a OAK. O player da use em uma porta e é transportado para o outro lado da mesma, onde em um quadrado tem alguns monstros. Mas quero apenas um player de cada vez dentro dessa area. Queria que quanto ja tivesse um player dentro da area, a unique ID 32193 não deixasse o player passar, e aparecesse uma mensagem.
Todos os meus REP+ pra quem me ajudar.
-
Ragnar Lothbrook recebeu reputação de Bluetooth em [NPC] Contador de históriasModifique a gosto:
historias.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 -- HISTORIA START -- keywordHandler:addKeyword({'historia um'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "era uma vez um lobo que comeu ração velha e morreu"}) keywordHandler:addKeyword({'historia dois'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "era uma vez uma ração velha, foi comida por um lobo e morreu"}) npcHandler:addModule(FocusModule:new()) Contador de Hiostorias.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Contador de Historias" script="historias.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150" /> <look type="277" head="0" body="0" legs="0" feet="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu conto historias, tenho duas historias pra contar. A {historia um} e a {historia dois}" /> <parameter key="message_farewell" value="Volte para ouvir mais historias!" /> </parameters> </npc> Não testei, se der algum erro, poste, que lhe ajudarei.
-
Ragnar Lothbrook deu reputação a xWhiteWolf em Dodge System 8.54+Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim:
Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano
Sem mais delongas, vamos ao script:
Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele:
agora adicione essa linha no creaturescripts.xml:
<event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true:
registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui:
<action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser.
em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim:
<item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele:
-
Ragnar Lothbrook recebeu reputação de RenanPhellip em NPC que vende Bless 1,2,3 free 4 5 vip (premium account)No arquivo lua coloque:
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 if msgcontains(msg, "first") or msgcontains(msg, "first bless") or msgcontains(msg, "primeira bless") or msgcontains(msg, "primeira") then selfSay("You sure to pay "..pre.." gold coins for a first bless?", cid) talkState[cid] = 1 elseif msgcontains(msg, 'yes') and talkState[cid] == 1 then if not getPlayerBlessing(cid, 1) then if doPlayerRemoveMoney(cid, pre) then doPlayerAddBlessing(cid, 1) selfSay("Now you have the first bless.", cid) talkState[cid] = 0 else selfSay("You don't have enough money to pay.", cid) end else selfSay("You already have the first bless.", cid) end elseif msgcontains(msg, 'no') and talkState[cid] == 1 then selfSay("What you wanna?", cid) talkState[cid] = 0 end if msgcontains(msg, "second") or msgcontains(msg, "second bless") or msgcontains(msg, "segunda bless") or msgcontains(msg, "segunda") then selfSay("You sure to pay "..pre.." gold coins for a second bless?", cid) talkState[cid] = 2 elseif msgcontains(msg, "yes") and talkState[cid] == 2 then if not getPlayerBlessing(cid, 2) then if doPlayerRemoveMoney(cid, pre) then doPlayerAddBlessing(cid, 2) selfSay("Now you have the second bless.", cid) talkState[cid] = 0 else selfSay("You don't have enough money to pay.", cid) end else selfSay("You already have the second bless.", cid) end elseif msgcontains(msg, 'no') and talkState[cid] == 2 then selfSay("What you wanna?", cid) talkState[cid] = 0 end if msgcontains(msg, "third") or msgcontains(msg, "third bless") or msgcontains(msg, "terceira bless") or msgcontains(msg, "terceira") then selfSay("You sure to pay "..pre.." gold coins for a third bless?", cid) talkState[cid] = 3 elseif msgcontains(msg, "yes") and talkState[cid] == 3 then if not getPlayerBlessing(cid, 3) then if doPlayerRemoveMoney(cid, pre) then doPlayerAddBlessing(cid, 3) selfSay("Now you have the third bless.", cid) talkState[cid] = 0 else selfSay("You don't have enough money to pay.", cid) end else selfSay("You already have the third bless.", cid) end elseif msgcontains(msg, 'no') and talkState[cid] == 3 then selfSay("What you wanna?", cid) talkState[cid] = 0 end if msgcontains(msg, "fourth") or msgcontains(msg, "fourth bless") or msgcontains(msg, "quarta bless") or msgcontains(msg, "quarta") then selfSay("You sure to pay "..pre.." gold coins for a fourth bless?", cid) talkState[cid] = 4 elseif msgcontains(msg, "yes") and talkState[cid] == 4 then if not getPlayerBlessing(cid, 4) then if doPlayerRemoveMoney(cid, pre) then doPlayerAddBlessing(cid, 4) selfSay("Now you have the fourth bless.", cid) talkState[cid] = 0 else selfSay("You don't have enough money to pay.", cid) end else selfSay("You already have the fourth bless.", cid) end elseif msgcontains(msg, 'no') and talkState[cid] == 4 then selfSay("What you wanna?", cid) talkState[cid] = 0 end if msgcontains(msg, "fifth") or msgcontains(msg, "fifth bless") or msgcontains(msg, "quinta bless") or msgcontains(msg, "quinta") then selfSay("You sure to pay "..pre.." gold coins for a fifth bless?", cid) talkState[cid] = 5 elseif msgcontains(msg, "yes") and talkState[cid] == 5 then if isPremium(cid) then if not getPlayerBlessing(cid, 5) then if doPlayerRemoveMoney(cid, pre) then doPlayerAddBlessing(cid, 5) selfSay("Now you have the fifth bless.", cid) talkState[cid] = 0 else selfSay("You don't have enough money to pay.", cid) end else selfSay("You already have the fifth bless.", cid) end elseif msgcontains(msg, 'no') and talkState[cid] == 5 then selfSay("What you wanna?", cid) talkState[cid] = 0 else selfSay("You need premium account to buy the fifth bless.", cid) end end local bless = {1, 2, 3, 4, 5} if msgcontains(msg, "all") or msgcontains(msg, "all blessings") or msgcontains(msg, "todas as bless") or msgcontains(msg, "todas") then selfSay("You sure to pay 50000 gold coins for a all blessings?", cid) talkState[cid] = 6 elseif msgcontains(msg, "yes") and talkState[cid] == 6 then for i = 1, table.maxn(bless) do if getPlayerBlessing(cid, bless[i]) then return selfSay("You already have all the blessings.", cid) end end if not isPremium(cid) then return selfSay("You need premium account to buy all blessings.", cid) end if not doPlayerRemoveMoney(cid, 50000) then return selfSay("You don't have enough money to pay.", cid) end local bless = {1, 2, 3, 4, 5} selfSay("Now you have the all blessings.", cid) talkState[cid] = 0 for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end elseif msgcontains(msg, 'no') and talkState[cid] == 6 then selfSay("What you wanna?", cid) talkState[cid] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Qualquer erro me informe.
-
Ragnar Lothbrook deu reputação a Orochi Elf em Catch Window v1.3[MOD] Catch Window v1.3
Bom.. todos conhecem a nova janela, que quando algum jogador captura um pokemon, que nunca capturou antes, abre na tela informando quantas pokebolas (PokeBalls, GreatBalls, SuperBalls e UltraBalls), o jogador gastou para capturar aquele pokemon, e mostra também quanto de experiencia o jogador ganhou por capturar aquele pokemon.
Instalação.
Por enquanto o PDA, é o único servidor que está adaptada no tópico, se alguém adaptar para outros servidores, e quiser compartilhar, será muito bem vindo. Obrigado
Pokemon Dash Advanced
Vá na pasta Lib / Catch System.lua, e procure por:
doAddPokemonInCatchList(cid, poke) E abaixo adicione:
CW_Count(cid, poke, typeee) CW_Caught(cid, poke) Agora procure por:
doIncreaseStatistics(poke, true, false) E abaixo adicione:
CW_Count(cid, poke, typeee) Agora, vá na pasta Lib / Crie um arquivo chamado "CatchWindow_lib.lua".
E dentro adicione -> Link Direto (PasteBin) <- Atualizado v1.3 !
Agora baixe o arquivo"CatcherWindow.rar", e extrai-a os arquivos dentro da pasta MODS da pasta do OTClient.
Editando...
No arquivo que voce colocou na LIB, tem uma tabela chamada "CW_Pokes", lá voce adiciona os pokemons e os configura.
["bulbasaur"] = {DB_Balls = 500001, DB_PK = 900001, ID_Portrait = 11989, P_Experience = 5000}, Legenda:
[NomeDoPokemon] = {DB_Balls = Numero da storage, que irá ficar salvo as balls usadas.
DB_Pk, Numero da storage, que irá ficar salvo se o pokemon foi capturado ou não.
ID_Portrait = Item ID do Portrait de cada pokemon
P_Experience = A quantidade de experiencia que o jogador irá ganhar ao capturar este pokemon.}
Vídeo:
https://www.youtube.com/watch?v=9ERSelYANFY&feature=youtu.be
Galera, eu estou com uma meta de conseguir 30 rep+ neste tópico, GO!
Créditos: Tony Araújo (OrochiElf) 100%
catcherWindow.rar
-
Ragnar Lothbrook deu reputação a Orochi Elf em [MOD] Catch Window[MOD] Catch Window v1.0
Sugestões para mudanças?
-
Ragnar Lothbrook recebeu reputação de ninpou123 em [NPC] Contador de históriasModifique a gosto:
historias.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 -- HISTORIA START -- keywordHandler:addKeyword({'historia um'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "era uma vez um lobo que comeu ração velha e morreu"}) keywordHandler:addKeyword({'historia dois'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "era uma vez uma ração velha, foi comida por um lobo e morreu"}) npcHandler:addModule(FocusModule:new()) Contador de Hiostorias.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Contador de Historias" script="historias.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150" /> <look type="277" head="0" body="0" legs="0" feet="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu conto historias, tenho duas historias pra contar. A {historia um} e a {historia dois}" /> <parameter key="message_farewell" value="Volte para ouvir mais historias!" /> </parameters> </npc> Não testei, se der algum erro, poste, que lhe ajudarei.
-
Ragnar Lothbrook deu reputação a xWhiteWolf em (Resolvido)Shapeshifter Ring ScriptItems.xml: Procure os items com os id's e edite.. eu só fiz no 7967 e 7968 porque são os que tem aqui no meu 8.54
<item id="7967" article="a" name="Shapeshifter Ring"> <attribute key="weight" value="80" /> <attribute key="armor" value="1" /> <attribute key="slotType" value="ring" /> <attribute key="transformEquipTo" value="7968" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> </item> <item id="7968" article="a" name="Shapeshifter Ring"> <attribute key="slotType" value="ring" /> <attribute key="decayTo" value="14327" /> <attribute key="transformDeEquipTo" value="7967" /> <attribute key="duration" value="36000" /> <attribute key="armor" value="1" /> <attribute key="showduration" value="1" /> <attribute key="weight" value="80" /> </item> o script é esse daqui e vai em movements:
local outfits = {320, 311, 305, 246, 232, 120, 90, 47} function onEquip(cid, item, slot) doTransformItem(item.uid, item.itemid + 1) local outfit = outfits[math.random(1, #outfits)] doSetCreatureOutfit(cid, {lookType = outfit}, -1) doSendMagicEffect(getCreaturePos(cid), 12) doDecayItem(item.uid) return true end function onDeEquip(cid, item, slot) doTransformItem(item.uid, item.itemid - 1) doRemoveCondition(cid, CONDITION_OUTFIT) doSendMagicEffect(getCreaturePos(cid), 12) return true end <movevent type="Equip" itemid="7967" slot="ring" event="script" value="shapeshifter.lua"/> <movevent type="DeEquip" itemid="7968" slot="ring" event="script" value="shapeshifter.lua"/> Desculpa a demora, essa semana foi complicada pra mim..
se quiser adicionar mais outfits é só editar aqui:
-
Ragnar Lothbrook deu reputação a xWhiteWolf em NPC identifica item em cima de Coal Basin.sabe o meu experience system? lá tem uma função que checa o level do item, daí vc usa a getTileItem que o amigão citou aí em cima pra pegar o item.. eu to meio zoado pra conseguir escrever tudo agora (quebrei o pulso esquerdo) mas se vc nao entender comenta ai que eu faço um esforço pra tentar explicar melhor.
-
Ragnar Lothbrook deu reputação a Garou em Monstros PassivosMonstros Passivos
Sabe, esse é um dos sistemas mais desejados, da família dos sistemas que surgiram com os Pokétibias, depois do TV System.
Aquele sistema que faz com que existam monstros que não atacam você, se você não atacar ou usar magias antes. Não tem nenhum segredo, resolvi fazer o meu em Lua e C++ por puro comodismo.
Então vamos ao passo-a-passo.
No seu arquivo monster.h, procure por isso:
bool isHostile() {return mType->isHostile;} Troque por:
bool isHostile() const { std::string value; if(!getStorage("hostile", value)) return mType->isHostile; return booleanString(value); } No seu monster.cpp, procure por:
Monster::selectTarget Abaixo de:
if(!isTarget(creature)) return false; Adicione:
if(!isHostile()) return false; Crie um arquivo chamado passive_system.lua no diretório creaturescripts/scripts, cole isso:
PASSIVE_BEHAVIOR = {"Deer", "Rabbit"} -- Aqui ficam os monstros que não atacam, mesmo que atacados. function onCombat(cid, target) if isMonster(target) then if not isInArray(PASSIVE_BEHAVIOR, getCreatureName(target)) then doCreatureSetStorage(target, "hostile", 1) end doMonsterSetTarget(target, cid) end return true end No arquivo login.lua:
registerCreatureEvent(cid, "PassiveSystem") No arquivo creaturescripts.xml:
<event type="combat" name="PassiveSystem" event="script" value="passive_system.lua"/> Dê um Rebuild All no seu servidor, ou compile, deletando a pasta obj.
Para usar basta mudar a flag hostile do monstro para 0 no arquivo XML dele.
Boa diversão.
Abraços,
Oneshot
-
Ragnar Lothbrook deu reputação a MaXwEllDeN em [CTF] Capture The Flag#Introdução
Este é um sistema de rouba bandeira, no qual tem dois times, que se enfrentam e tentam se infiltrar na fortaleza do inimigo, roubar a bandeira dele e retornar para sua base com ela.
#Instalação
Faça o download do sistema e cole na pasta do seu servidor.
Após ter instalado os arquivos nas suas respectivas pastas abra a pasta do seu servidor, e em seguida abra a pasta spells/scripts/support, e abra o arquivo invisible.lua com algum editor de texto, depois de
function onCastSpell(cid, var)
cole isso:
if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) > 0) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end
ficando assim:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) setCombatCondition(combat, condition) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) > 0) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end return doCombat(cid, combat, var) end
#Configuração
Como na maioria dos meus códigos: as configurações ficam na lib, então:
_CTF_LIB.flags = { [_CTF_LIB.redid] = {pos = {x = 744, y = 638, z = 6}, posEflag = {x = 744, y = 644, z = 6}, id = 1435, color = 180, na = "Vermelho", temple = 3,
temple = 3,
Esse é o id do templo que os players do time vermelho serão teletransportados.
pos = {x = 744, y = 638, z = 6},
Posição de onde a bandeira do time fica
posEflag = {x = 744, y = 644, z = 6},
Posição de onde os players do time entregam a bandeira.
winp = 2, recompCTF = {{2160, 2}}, nopen = true, -- Precisa usar o comando para abrir? false não true sim TownExit = 1, -- Templo que o player será teletransportado quando acabar o evento ou ele sair dele. price = false, -- Preço para entrar no Evento, caso não precise Digite false.
winp = 2, recompCTF = {{2160, 2}},
winp : pontos que um time precisará fazer para ganhar o evento.
recompCTF: recompensa que o time ganhará ao vencer o CTF. para adicionar mais só é você fzer assim:
recompCTF = {{2160, 2}, {7542, 1}},
2160 é o id do item que vai adicionar, e 2 é a quantidade.
7542 é o id do item que vai adicionar, e 1, é a quantidade.
nopen = true, -- Precisa usar o comando para abrir? false não true sim
se precisar usar o comando /ctf open para abrir o evento coloque true, se não precisar coloque false.
TownExit = 1, -- Templo que o player será teletransportado quando acabar o evento ou ele sair dele. price = false, -- Preço para entrar no Evento, caso não precise Digite false.
TownExit: id do templo que o player será teletransportado quando ele sair do evento ou quando o adm usar /ctf close.
price: preço para entrar no evento em gold coins, caso não precise deixe false.
Não esqueçam de criar um teleport dentro do evento, com a actionid 47521, caso os players queiram sair do evento
E aqui acabamos mais um código.. '-' Flw ae xD .
Qualquer bug não se acanhe em falar
Abraço. -
Ragnar Lothbrook deu reputação a MaXwEllDeN em {Simple} Level Points#Introdução
Este é um sistema muito simples e básico que eu fiz baseando-me no jogo Mu Online, no qual ao avançar de nível você ganha pontos que podem ser distribuídos para aumentar seus "stats".
#Instalação
Faça o download do sistema e cole na pasta do seu servidor.
@Creaturescripts
Depois abra a pasta creaturescripts/scripts que fica dentro da pasta data do seu servidor, abra o arquivo login.lua, com algum editor de texto, e lá no final antes do último return true cole a seguinte linha:
registerCreatureEvent(cid, "PointSystem") #Configuração No arquivo PointsSystem.lua da pasta lib L_LvlPoints = { vocPoints = { -- [Skill] = Pontos que ganha, [1] = 3, [2] = 3, [3] = 3, [4] = 5, [5] = 5, [6] = 5, [7] = 5, [8] = 8, }, entre Colchetes fica o id da vocation, e depois do sinal de igualdade a quantidade de pontos que ele ganhará por level que for upado. attributes = { ["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Precisa usar 2 points para adicionar 10 de hp ["energy"] = {np = 4, vl = 2, nm = "Mana Points"}, ["magic"] = {np = 30, vl = 1, nm = "Magic Level"}, ["shielding"] = {np = 40, vl = 1, nm = "Shielding Skill"}, ["sword"] = {np = 20, vl = 1, nm = "Sword Skill"}, ["axe"] = {np = 20, vl = 1, nm = "Axe Skill"}, ["club"] = {np = 20, vl = 1, nm = "Club Skill"}, ["distance"] = {np = 20, vl = 1, nm = "Distance Skill"}, } np - quantidade de pontos para adicionar o stat vl - quanto vai adicioanar pelo np. Exemplo: ["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}
Com 2 pontos eu compro 5 de HP
É isso ai galera, bye bye
-
Ragnar Lothbrook deu reputação a Killua em Sistema de Upgrade Bronson Server (refinar)Este é um sistema de refinar itens feito com base no do Bronson Server. Para refinar, o jogador precisa ter uma certa quantidade de Iron Ores (dependendo do level do item) e de um Iron Hammer.
Somente equipamentos e armas podem ser refinados.
crie Killua Upgrading System.lua em data/actions/scripts e coloque:
--- Sistema de Upgrade de itens feito por Killua. --- Sistema feito com base no do Bronson Server. local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados local controle = { {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso {level = 1, quantOre = 2, chance = 90}, {level = 2, quantOre = 3, chance = 80}, {level = 3, quantOre = 4, chance = 70}, {level = 4, quantOre = 5, chance = 60}, {level = 5, quantOre = 6, chance = 50}, {level = 6, quantOre = 7, chance = 40}, {level = 7, quantOre = 8, chance = 30}, {level = 8, quantOre = 9, chance = 20}, {level = 9, quantOre = 10, chance = 10} } function getItemLevel(uid) if uid > 0 then return getItemAttribute(uid, "lvl") or 0 end return false end function doItemAddLevel(uid, count) if uid > 0 and tonumber(count) > 0 then return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count) end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) if not isInArray(vocations, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.") elseif isInArray(ids_bloqueados, itemEx.uid) then return doPlayerSendCancel(cid, "Este item nao pode ser refinado.") end if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then for _, upgrade in pairs(controle) do local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor local chance = math.random(1, 100) if getItemLevel(itemEx.uid) == upgrade.level then if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS) if chance <= upgrade.chance then if getItemLevel(itemEx.uid) == 0 then doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid)) end doItemAddLevel(itemEx.uid, 1) doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid)) if getItemInfo(itemEx.itemid).attack > 0 then doItemSetAttribute(itemEx.uid, "attack", atk + 1) return true elseif getItemInfo(itemEx.itemid).armor > 0 then doItemSetAttribute(itemEx.uid, "armor", arm + 1) return true elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then doItemSetAttribute(itemEx.uid, "defense", def + 1) return true end else doTransformItem(itemEx.uid, 2256) doItemSetAttribute(itemEx.uid, 'name', "metal trash") doItemSetAttribute(itemEx.uid, 'attack', 0) doItemSetAttribute(itemEx.uid, 'armor', 0) doItemSetAttribute(itemEx.uid, 'defense', 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.") return true end else doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.") end end end else doPlayerSendCancel(cid, "Esse item nao pode ser refinado.") end return true end Em data/actions/actions.xml coloque essa TAG:
<action itemid="2422" event="script" value="Killua Upgradin System.lua"/> Para configurar, leia meus comentários dentro do código.
-
Ragnar Lothbrook deu reputação a Killua em Itens ganhando exp e upando (Upgrade System)Como funciona?
A cada monstro que vc mata, seus itens equipados ganham 1 de exp. Quando seus itens chegarem às quantidades de exp definidas, eles upam e ficam com o nome assim: Demon Helmet + 1. Helmets, armors, legs, e boots recebem 1 de arm a cada vez que upam. Armas recebem 1 de ataque e escudos 1 de defesa.
Para o monstro contar, ele deve dar um mínimo de exp (definido no script). O número de exp a que me refiro é aquele um presente no arquivo .xml.
Para instalar, crie Killua Items Upgrade.lua em data/creaturescripts/scripts e coloque:
Em data/creaturescripts/creaturescripts.xml coloque essas duas tags:
<event type="kill" name="Item level" event="script" value="Killua Items Upgrade.lua"/> <event type="login" name="Item levell" event="script" value="Killua Items Upgrade.lua"/> Configurando: Na tabela table_of_slots, coloque em quais slots os itens upam.
min_exp é a experiência mínima que o monstro deve ter para contar exp para o item. Se vc colocar 500, somente os monstros que tem exp igual ou superior a 500 no arquivo.xml vão valer.
exp_levels são os valores de exp que os itens devem atingir para upar. No meu caso, quando o item alcançar 50 de exp, ele upa para o level 1. Quando alcançar 50 de exp, upa para o level 2 e assim por diante.
-
Ragnar Lothbrook deu reputação a Garou em Forge SystemADVANCED 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.rar -
Ragnar Lothbrook deu reputação a Hona em [Gesior ACC LAYOUT] Cyber layout[Gesior ACC LAYOUT] Cyber Criado Por
Bufo e codificada