Jump to content

Search the Community

Showing results for tags 'creatureevent'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

  1. Falaew Galera, eu nao sou muito de postar em foruns e talz, então caso eu faça algo de errado me diga para eu poder ajeitar. entao... esses dias eu me deparei com um player revoltado querendo nukar o meu ot logando milhares de acc manager, eu resolvi pesquisar sobre e me falaram que era apenas colocar um anti mc para impedir chars de mesmo ip logarem assim nao teria como logar milahres de acc managers. Até ai beleza, eu pesquisei por scripts e achei um script q fazia isso, mas me deparei com um problema. muitas pessoas q jogavam junto com irmaos e tinham net compartilhada usavam o mesmo ip, entao eu resolvi pegar o script de impedir de players logarem com o mesmo ip e mudei pra players de nome Account Manager. Agora q ja contei a historia, vamos la... basta vc ir na sua pasta Creaturescript, copiar um arquivo de la, nomea-lo antiacc e colar isso daki: local config = { max = 1, -- número de players permitido com o mesmo ip group_id = "Account Manager" -- kikar apenas player com o group id 1 } local accepted_ip_list = {} -- lista dos players permitidos a usar MC, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(p) if (#getPlayersByIp(getPlayerIp(p.pid)) >= p.max) then doRemoveCreature(p.pid) end return true end function onLogin(cid) if getPlayerName(cid) == config.group_id then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) == false then addEvent(antiMC, 1000, {pid = cid, max = config.max+1}) end end return true end Depois va no seu creaturescript e add: <event type="login" name="antiacc" event="script" value="antiacc.lua"/> Entao, é isso ai Quem gostou Rep+
  2. Unknown Heal Introdução Eu tava criando essa script pra participa da oms, mais não deu tempo de coloca então ta aqui. Coloquei o nome de unknown heal porque eu não conseguir pensa em um nome pra ela. ¬¬ O que a script faz : -Se algum monstro ou player tiver te atacando o dano se transforma em curar. por exemplo se você toma um dano de 100 quando a magia tiver ativa esse dano de 100 vai se transforma em life pode ser configurado. Vamos la. xD creaturescript: unknownheal.lua: -- Do not remove the credits -- -- [CREATURESCRIPT] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then local vida = (value) -- não mecha nisso local retira = 1 -- 1 vai absorve o life todo , 2 vai obsorve metade do life if (getPlayerStorageValue(cid, 54654644) == 1) then doCreatureAddHealth(cid, (vida / retira)) doSendAnimatedText(getCreaturePosition(cid), "+"..(vida / retira).."!", 25) return false end end return true end function onLogin(cid) doPlayerSetStorageValue(cid, 54654644, -1) return true end creaturescript.xml tag: <event type="Login" name="unknownheal" event="script" value="unknownheal.lua"/> <event type="StatsChange" name="unknownheal2" event="script" value="unknownheal.lua"/> Login.lua adicione isso antes do ultimo return registerCreatureEvent(cid, "unknownheal") em spells/script unknownheal.lua: -- Do not remove the credits -- -- [SPELL] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- local tempo = 5 -- quanto tempo a magia vai durar local timer = 5 -- quantos segundos em segundo vai pode usa a magia -- obs:so vai começa a conta quando a magia tiver terminado local effect = 28 -- efeito da magia local storage = 1231234343 local storagemag = 54654644 -- não mecha function onCastSpell(cid, var) if getPlayerStorageValue(cid, storagemag) == -1 then if getPlayerStorageValue(cid, storage) < os.time () then setPlayerStorageValue(cid, storagemag, 1) doSendMagicEffect(getThingPos(cid), 28) setPlayerStorageValue(cid, storage, os.time () + tempo + timer) addEvent(termina, tempo*1000, cid) else doPlayerSendCancel(cid, "Voce so pode usar esse magia daqui a "..getPlayerStorageValue(cid, storage) - os.time ().." segundos.") end else doPlayerSendCancel(cid, "Voce ja ta usando a magia.") end return true end function termina(cid) setPlayerStorageValue(cid, storagemag, -1) doSendMagicEffect(getThingPos(cid), 29) end end Spells.xml tag: <instant name="Unknownheal" words="unknown heal" lvl="1" mana="0" prem="0" range="10" blockwalls="0" exhaustion="0" needlearn="0" event="script" value="unknownheal.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="0"/> </instant> Bug Ageitado funcionando 100%
  3. Sistema de Aura [V1.0] Opa galera. Hoje eu vim postar para voces, um sistema de Aura. Tipo .. eu não tinha nada pra fazer... e então eu resolvi postar esse conteúdo para contribuir mais com o forum... porque ultimamente, eu não venho postando conteúdos para os usuários , kkkkkk Funcionamento: Bom. Existe um NPC, que vende as auras por 100k cada. Existe 8 tipos de auras diferentes. [ Death, Earth, Posion, Ice, Physical, Energy, Holy, Fire ]. Não existe maximo de aura para cada player, se o player quizer, ele pode comprar as 8. Bom .. Quando o player toma um dano do tipo, da aura que ele tem, ele tem 50% de refletir ou absorver . Exemplo : Eu compro uma aura de death. vamos dizer que um outro jogador me taca uma SD. Eu tenho 50% de chance, de refletir essa SD para o outro jogador, ou eu posso tomar o dano dela. Configuraçoes: Bom .. as configuraçoes são muito simples . Para configurar o preço da aura, é o seguinte no script do NPC. voce procura por local gold_id . para mudar o ID do gold . no caso está no crystal coin (10k) local ammount . é para mudar a quantidade, no caso está 10 . então são 10 crystal coins, ou seja, 100k. Sistema : Bom. para instalar é bem simples também. Vá em Pasta_do_Servidor / Data / Creaturescript / Scripts / Crie um arquivo chamado : AuraSystem.lua E ponha isto dentro : Link dos Códigos. Aqui Agora, continuando na mesma pasta , vá em login.lua e antes do ultimo Return True Adicione : registerCreatureEvent(cid, "AuraSystem") Agora, vá em creaturescript.xml E adicione esta tag <event type="statschange" name="AuraSystem" event="script" value="AuraSystem.lua"/> Agora. vá em Data / Npc / Scripts Crie um arquivo chamado : AuraSystem.lua E ponha isto : Link dos Códigos: Aqui Agora Na pasta dos NPCs, crie um Arquivo chamado : Aura.xml E adicione dentro Link dos Códigos: Aqui Bom galera, feito isso é so testar e curtir. Créditos Feito 100% Por Min. (OrochiElf / Tony PlySon / Tony Araújo.)
  4. Não sei se to no lugar certo, se não estiver movam pf. Esse aki é um sistema que vc não escolhe a task, vai na ordem dos mais fracos aos mais fortes: 1° - Crie um arquivo.lua em data/creaturescripts/scripts chamado killinginthenameof.lua e cole isto dentro dele: 2° - Salve e feche. Agora, na mesma pasta, abra o arquivo login.lua e cole isto nele : 3° - Salve. E volte para data/creaturescripts e abra o arquivo creaturescripts.xml. Agora cole : 4° - Agora vá em data/npc e crie um arquivo chamado Grizzly Adams.xml e dentro dele coloque : 5° - Agora abra vá em data/npc/scripts e crie um arquivo chamado killinginthenameof.lua e dentro dele coloque : Pronto !! Seu sistema já tá pronto pra ser usado, se der algum erro, tente colar este scripts em todos os monstros das tasks. Créditos: ADMPianista Eu -- Por trazer ao Xtibia Lembrem de comentar e dar REP++
  5. Spread Loot Este é um pedido feito no tópico A Fábrica Boa noite, galera. Este é o primeiro pedido atendido no meu tópico A Fábrica, foi um pedido feito pelo usuário OriGM. Consiste em um sistema de "espalhar" o loot do monstro em uma área delimitada de 1 sqm, torna o jogo bem real, afinal muitos MMORPGs, como Mu Online, Ragnarok, entre outros, "espalham" seu loot. Não tive como fazer diferentes testes, mas acho que funciona muito bem e não tem bugs severos, como criar itens em tiles bloqueados. A instalação é fácil como qualquer creaturescript. spreadloot.lua local function doSpreadLoot(fromPosition, toPosition, container) for slot = (getContainerSize(container.uid) - 1), 0, -1 do local item = getContainerItem(container.uid, slot) if not isContainer(item.uid) then local position = { x = math.random(fromPosition.x, toPosition.x), y = math.random(fromPosition.y, toPosition.y), z = fromPosition.z, } local itemEx = doCreateItemEx(item.itemid, item.type) if doTileAddItemEx(position, itemEx) then doRemoveItem(item.uid) end else doSpreadLoot(fromPosition, toPosition, item) doRemoveItem(item.uid) end end return true end function onKill(cid, target) if isMonster(target) then local position = getCreaturePosition(target) local name = getCreatureName(target) local fromPosition = {x = position.x - 1, y = position.y - 1, z = position.z} local toPosition = {x = position.x + 1, y = position.y + 1, z = position.z} addEvent(function() local container = getTileItemById(position, getMonsterInfo(name).lookCorpse) if container.uid > 0 then doSpreadLoot(fromPosition, toPosition, container) end end, 100) end return true end login.lua registerCreatureEvent(cid, "SpreadLoot") creaturescripts.xml <event type="kill" name="SpreadLoot" event="script" value="lootsystem.lua"/> Bom, isso é tudo, minha galera. Att, Oneshot Garou
  6. Olá minhas amigas e amigos,já fazia um tempo que procurava esse script,ai resolvi tentar criar sozinho,mas não deu certo,depois que desisti,um tempo depois,achei sem querer o script num ot Alissow,que baixei para buscar idéias de novos scripts, RSRSRSRS,quando a gente procura nunca acha né ? acabou que achei por acaso. O que é o script ? É um script que deixa uma marcação no MINI-MAP do jogador dando informações do lugar,ótimo pra quem ter ots com map próprio,vc pode usar essas marcações quantas vezes quiser,indicando hunts,npcs,locais perigosos,para ajudar na jogabilidade do player. 100% funcional e simples,pode testar a eficiência é garantida,vale a pena usar! Créditos: 1% pra mim que divulguei aqui no site! 99% pro ot alissow e seus criadores! Ao script agora >>> Abra a pasta data/creaturescripts/scripts crie um arquivo.lua com o nome de "mapmark.lua" sem aspas e cole a seguinte função! local config = { storage = 030220122041, version = 1, marks = { {mark = 10, pos = {x = 2281, y = 2516, z = 7}, desc = "Derus Temple!"}, {mark = 15, pos = {x = 2340, y = 2508, z = 7}, desc = "Derus DP!"}, {mark = 16, pos = {x = 2355, y = 2526, z = 7}, desc = "Paladin seller!"} } } local f_addMark = doPlayerAddMapMark if(not f_addMark) then f_addMark = doAddMapMark end function onThink(cid, interval) if(isPlayer(cid) ~= TRUE or getPlayerStorageValue(cid, config.storage) == config.version) then return end for _, m in pairs(config.marks) do f_addMark(cid, m.pos, m.mark, m.desc ~= nil and m.desc or "") end setPlayerStorageValue(cid, config.storage, config.version) return TRUE end bom creio eu que já é auto-explicativo,mas se alguem tiver dúvidas pode perguntar,se é que é possivel não entender esse script! agora vá em data/creaturescripts/login.lua e add essa tag: registerCreatureEvent(cid, "MapMark") quase acabando,vá agora registrar TUDO que você fez,vá na pasta data/creaturescript/creaturescript.xml e add essa tag depois desse simbolo aqui >>> /> <event type="think" name="MapMark" event="script" value="mapmark.lua"/> Prontinho galera mais uma coperação pro xtibia,eu busquei esse tuto encontrei e pode ser util pra mais gente! REP+ ? ABRAÇOS PESSOAL XD
  7. De Warcraft Dota Vá em data/creaturescripts/creaturescripts.xml, e adicione a tag - <event type="kill" name="pvpsystem" event="script" value="pvpsystem.lua"/> Vá em data/creaturescripts/login.lua, e adicione esta tag - registerCreatureEvent(cid, "pvpsystem") Vá em data/creaturescripts/scripts, crie um arquivo .lua com o nome de pvpsystem e adicione isto - local storage = { kills = 8003 } local streaks = { [2] = "DOUBLE KILL!", [3] = "TRIPLE KILL!", [5] = "M-M-M-MONSTER KILL!!", [7] = "RAMPAGE!", [9] = "UNSTOPPABLE!", [12] = "HOLY SHIT!", [15] = "GODLIKE!!" } function onKill(cid, target, lastHit) if isPlayer(cid) and isPlayer(target) then setPlayerStorageValue(cid, storage.kills, getPlayerStorageValue(cid, storage.kills) + 1) setPlayerStorageValue(target, storage.kills, 0) for _, pid in ipairs(getPlayersOnline()) do local s = {"matou", "cortou em pedaços", "detonou", "humilhou", "Num Quero Falar Mais Nada Pra Foder"} doPlayerSendChannelMessage(pid, "PVP", "".. getCreatureName(cid) .." ".. s[math.random(1, #s)] .." ".. getCreatureName(target) ..".", TALKTYPE_CHANNEL_Y, 10) end local k = streaks[getPlayerStorageValue(cid, storage.kills)] if k then doBroadcastMessage(getCreatureName(cid) .. " - ".. k, MESSAGE_INFO_DESCR) end end return true end
  8. Este sistema faz com que o server seja divido em 2 times, o time vermelho e o time azul. em "data\creaturescripts\scripts" crie um arquivo chamado "pvpTeam.lua" e cole o seguinte código redTeamSpawn = { x = 218, y = 172, z = 7} -- red team spawn position blueTeamSpawn = { x = 218, y = 170, z = 7} -- blue team spawn position redTeamParticipants = {} blueTeamParticipants = {} function teamLength(team) -- return the number of players in team local count = 0 for _ in pairs(team) do count = count + 1 end return count end function playerJoin(cid) -- try to join player in event if ableToJoin(cid) then redTeamParticipantsLength = teamLength(redTeamParticipants) blueTeamParticipantsLength = teamLength(blueTeamParticipants) if redTeamParticipantsLength <= blueTeamParticipantsLength then redTeamParticipants[cid] = true doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time vermelho.") doTeleportThing(cid, redTeamSpawn) else blueTeamParticipants[cid] = true doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time azul.") doTeleportThing(cid, blueTeamSpawn) end return TRUE else return FALSE end end function playerRemove(cid) -- remove player from event (if its participating) if isParticipating(cid) then if redTeamParticipants[cid] == true then redTeamParticipants[cid] = nil else blueTeamParticipants[cid] = nil end return TRUE else return FALSE end end function isParticipating (cid) -- verify if player is participating of the event if blueTeamParticipants[cid] == true or redTeamParticipants[cid] == true then return TRUE else return FALSE end end function ableToJoin (cid) -- checks if players are able to join if isPlayer(cid) and not isParticipating(cid) then return TRUE else return FALSE end end function arePlayersOfSameTeam (cid1, cid2) -- checks if the players are of the same team if ((blueTeamParticipants[cid1] == true and blueTeamParticipants[cid2] == true) or (redTeamParticipants[cid1] and redTeamParticipants[cid2])) then return TRUE else return FALSE end end function onLogin(cid) -- checks if it's really a player and if it's only if isPlayer(cid) then if isParticipating(cid) == true then return FALSE -- Ooops! If the script reachs here, we gotta verify what's going wrong else if playerJoin(cid) == true then return TRUE -- everything gone as expected else return FALSE -- Ooops! If the script reachs here, we gotta verify what's going wrong end end else return TRUE end end function onLogout(cid) -- this function is essential to not unbalance the teams if isParticipating (cid) then return playerRemove(cid) end return TRUE end function onAttack(cid, attacker) -- verify if both are players if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end -- are those players participating of the event? if not isParticipating(cid) or not isParticipating (attacker) then return TRUE end if arePlayersOfSameTeam(cid, attacker) then -- a player of the same team cannot attack the other!! return FALSE else return TRUE end end function onStatsChange(cid, attacker, t, combat, value) -- verify if both are players if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end -- verify if both are participating of PVP if isParticipating(cid) and isParticipating(attacker) then -- both are participating of event -- verify if both are of the same team if arePlayersOfSameTeam(cid, attacker) then -- they're of the same team. Only heals are acceptable if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN then return TRUE else return FALSE end else -- they're not of the same team. Only damages are acceptable if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN then return FALSE else return TRUE end end else -- one or both are not participating of event return TRUE end -- getting local player1Team = monstersTeam[getCreatureName(cid)] -- return if it has no team if player1Team == nil then return TRUE end -- getting monster that is attacking team local monster2Team = monstersTeam[getCreatureName(attacker)] -- return if it has no team if monster2Team == nil then return TRUE end -- check if they're of the same team if monster1Team == monster2Team then -- if they're of the same team, returning false will not allow the damage to be done to its partner return FALSE else return TRUE end return TRUE end agora, em "creaturescripts.xml" adicione o seguinte <event type="attack" name="PvpTeam1" event="script" value="pvpTeam.lua"/> <event type="statschange" name="PvpTeam2" event="script" value="pvpTeam.lua"/> <event type="login" name="PvpTeam3" event="script" value="pvpTeam.lua"/> <event type="logout" name="PvpTeam4" event="script" value="pvpTeam.lua"/> depois, no arquivo "login.lua" que se encontra em "data\creaturescripts\scripts" adicione registerCreatureEvent(cid, "PvpTeam1") registerCreatureEvent(cid, "PvpTeam2") registerCreatureEvent(cid, "PvpTeam3") registerCreatureEvent(cid, "PvpTeam4") Bom, é isso. Espero ter ajudado. P.S.: Não me importo que roubem meus créditos e/ou postem em outros fórums.
  9. Bom... decidi postar agora o script que eu fiz para barrar os botters de fast attack. Primeiro, crie um arquivo chamado "antiBot.lua" em "data\creaturescripts\scripts" e nele adicione o seguinte conteúdo: -- counts physicals, casts .... [player name : creature cid] playerAttacksMade = {} playerActivateTime = {} playerBlocked = {} function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end function onLogin(cid) if isPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Loading Anti Bot... done.' ) playerAttacksMade[cid] = {} playerActivateTime[cid] = {} playerBlocked[cid] = false end return true end function onLogout(cid) if isPlayer(cid) then playerAttacksMade[cid] = nil playerActivateTime[cid] = nil playerBlocked[cid] = nil end return true end function onStatsChange(cid, attacker, type, combat, value) local maxAttacks = { 6, --pos 1 6, --pos 2 6, --pos 3 6, --pos 4 7, --pos 5 7, --pos 6 7, --pos 7 7, --pos 8 } if not type == STATSCHANGE_HEALTHLOSS or not type == STATSCHANGE_MANALOSS or not isPlayer(attacker) then return true end if value <= 0 then return true end if playerAttacksMade[attacker][cid] == nil then playerAttacksMade[attacker][cid] = 0 playerActivateTime[attacker][cid] = os.time() end local currentTime = os.time() --TESTE --doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_ORANGE, playerAttacksMade[attacker][cid] .. '________' .. attacker .. '_____' .. cid .. '______' .. currentTime .. '_______' .. playerActivateTime[attacker][cid] ) if currentTime >= playerActivateTime[attacker][cid] then playerActivateTime[attacker][cid] = currentTime + 1 playerAttacksMade[attacker][cid] = 0 else playerAttacksMade[attacker][cid] = playerAttacksMade[attacker][cid] + 1 end if playerAttacksMade[attacker][cid] > maxAttacks[getPlayerVocation(attacker)] then playerBlocked[attacker] = true doBroadcastMessage('O player ' .. getPlayerName(attacker) .. ' esta usando bot de fast attack. O seu ataque foi travado ate que ele relogue.', 21) doShowTextDialog(attacker,1952,"PARE DE USAR ELFBOT! Seu ataque foi bloqueado. Para destravar basta relogar. Obrigado. (Sistema exclusivo do ot)") return FALSE end return TRUE end function onCombat(cid, target) if isPlayer(cid) then if not playerBlocked[cid] then registerCreatureEvent(target, "AntiBot2") else return false end end return true end function onCast(cid, target) if isPlayer(cid) then if playerBlocked[cid] then return false end end return true end e em "creaturescripts.xml", encontrado em "data\creaturescripts" adicione: <event type="combat" name="AntiBot1" event="script" value="antiBot.lua"/> <event type="statschange" name="AntiBot2" event="script" value="antiBot.lua"/> <event type="login" name="AntiBot3" event="script" value="antiBot.lua"/> <event type="logout" name="AntiBot4" event="script" value="antiBot.lua"/> <event type="cast" name="AntiBot5" event="script" value="antiBot.lua"/> Agora vou explicar a parte configurável: Aqui você vai modificar qual o número máximo de ações de combate (que dão dano) que certa vocação poderá dar. Posição 1 é Sorcerer, 2 é Druid, 3 é Paladin, 4 é Knight e assim por diante.... Escolha bem esses números! Caso você erre, ele irá ficar detectando erradamente. Por exemplo,vamos supor que o knight tenha o fastAttack em 500ms (logo ele executará 2 ataques por segundo) e que sua magia de dano de menor exhaust tenha um exhaust de apenas 600ms, logo o numero maximo de ataques dele por segundo será 4 (cuidado quando spells de dano diferentes puderem ser usadas ao mesmo tempo, daí você terá de acrescentar mais 1 ao número de ataques por segundo. Não se esqueça dos dots Por favor, testem e me falem o que acharam. Espero que ajude a tirar os botters de seu server. P.S.: Não me importo que roubem meus créditos e/ou postem em outros fórums. É bom espalhar esse script uma vez que botters nos servers 8.6 é muito comum.
  10. Fala Galera esse script é pra quem ta tendo problemas com ml do server nto shinobi. 1° Crie um arquivo .lua na pasta (Creaturescripts\scripts) com o nome maxml.lua, e coloque isso. function onAdvance(cid, skill, oldlevel, newlevel) local maxml = 10 if skill == 7 then if newlevel >= maxml then doPlayerSetMagicRate(cid, 0) setPlayerStorageValue(cid, 20130314, maxml) end end return true end 2° Vá até o Login.lua e adicione. registerCreatureEvent(cid, "maxml") if getPlayerStorageValue(cid, 20130314) ~= -1 and getPlayerMagLevel(cid, true) >= getPlayerStorageValue(cid, 20130314) then doPlayerSetMagicRate(cid, 0) end return true end 3º Abra o Creaturescripts.xml e adicione. <event type="advance" name="maxml" event="script" value="maxml.lua"/> 4º Abra o seu config.lua e mude o rate magic para 0.1 assim. rateExperience = 50.0 rateExperienceFromPlayers = 0 rateSkill = 3.0 rateMagic = 0.1 <---- AQUI. rateLoot = 7.0 rateSpawn = 7 Lembrando como o Demonbholder disse, O ruim desse código é que você não pode mudar o magic level depois que você escolheu, só se mudar o storage junto. Flws. Creditos. Demonbholder pelo script ! E a mim por ter descoberto o Jeito do ml não passar do limite !
  11. Função: Quando um jogador matar outro, irá aparecer em seu default uma mensagem avisando. E a mensagem será, por exemplo: Newbie [50] acaba de ser morto por Matheus [200]! Vamos lá! 1. Acesse: data/creaturescripts/scripts e abra o arquivo deathbroadcast.lua. Coloque isto: function onKill(cid, target, lastHit) local cortext = 27 if isPlayer(target) == TRUE then doBroadcastMessage("|TARGETNAME| [|TARGETLEVEL|] acaba de ser morto por |KILLERNAME| [|KILLERLEVEL|]!", cortext) end return TRUE end 2. Agora vá em data/creaturescript e abra o arquivo creaturescript.xml. Em seguida, coloque isto: <event type="kill" name="DeathBroadCast" event="script" value="deathbroadcast.lua"/> 3. Vá em data/creaturescripts/scripts e abra o arquivo login.lua. Terá lá registerCreatureEvent, coloque este código abaixo disso: registerCreatureEvent(cid, "DeathBroadCast") Para você alterar as cores do aviso que irá aparecer a cada morte, coloque este: MESSAGE_FIRST = 18 MESSAGE_STATUS_CONSOLE_RED = MESSAGE_FIRST MESSAGE_EVENT_ORANGE = 19 MESSAGE_STATUS_CONSOLE_ORANGE = 20 MESSAGE_STATUS_WARNING = 21 MESSAGE_EVENT_ADVANCE = 22 MESSAGE_EVENT_DEFAULT = 23 MESSAGE_STATUS_DEFAULT = 24 MESSAGE_INFO_DESCR = 25 MESSAGE_STATUS_SMALL = 26 MESSAGE_STATUS_CONSOLE_BLUE = 27 MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_BLUE Créditos: vmAth
  12. galera eu queria um script que quando você mata um monstro chamado diablo você ganha um storage ,ai no caso esse storage vai ser 3 cargas de uma magia que so ganha quem matou o diablo ,ai quando o player usa as 3 cargas ,ele só pode voltar a usar se matar o diablo denovo ,podem me ajudar ?
  13. Um usuário me pediu pra fazer e achei interessante, então vou postar aqui pra quem quiser usar: INFORMAÇÕES: Ring que previne a morte de um jogador que tiver equipado o ring por pelo menos 5 minutos. CÓDIGO: Creaturescript:Crie um arquivo chamado ring.lua em creaturescripts/scripts: Tag no creaturescripts.xml <event type="preparedeath" name="Anel Ressucitador" event="script" value="ring.lua"/> Tag no login.luaAdicione isso perto dos outros register em creaturescripts/scripts/login.lua registerCreatureEvent(cid, "Anel Ressucitador") Movement:Crie um arquivo ringres.lua em movements/scripts Tag no movements.xml: <movevent type="Equip" itemid="id do ring" level="level necessário" script="ringres.lua"/> OBSERVAÇÕES: Se houver algum bug, poste o erro em spoiler no comentário ou será ignorado Cuidado para não deixar duas tags do mesmo item no movements.xml Verifique quais atributos esse item muda no items.xml
  14. Não sei se estou na área correta ! mais chega de conversa e vamos lá. Bom eu criei um castelo que quando completa você ganha prêmios só que nesse castelo tem monstros, ou seja os player podem morrer quero cria em protect nessa area toda do castelo pra quando morrer é teleportado para o templo invés de morre perder loot skill e xp somente vai para o templo . Quem puder ta ajudando vou agradeçer muito, e darei 3 REP + toda dia durante 1 mês. Espere que alguem me ajuda estou desesperado nessa script .
  15. Vi duas pessoal no fórum pedindo então ta aí, quando você loga você ganha todos os addons.
  16. Olá, é um sistema que mostra quem é o novo top do servidor vá em Pasta do seu OT/data/creaturescripts nome_do_script.lua function getTop() -- função by vodkart local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;") if (query:getID() ~= -1) then return {query:getDataString("name"),query:getDataInt("level")} end return false end function onAdvance(cid, oldLevel, newLevel) if skill == 8 then local top = getTop() if newLevel > top[2] and getCreatureName(cid) ~= top[1] then broadcastMessage(getCreatureName(cid).." é o novo TOP do servidor ele está no level [" .. newLevel .. " ] .", 25) end end return true end [/code] creaturescripts.xml <event type="advance" name="checkNewTop" script="nome_do_script.lua"/> login.lua registerCreatureEvent(cid, "checkNewTop") é isso galerinha flws.
  17. ~Kill Recompense~ É um script que quando você matar uma certa quantia de monster, você ganhara uma recompensa, ou mais, você pode definir no script. Para adicionar mais monstros é fácil, você só adiciona mais uma linha na tabela KILLS local KILL = { ["Demon"] = {killed = 50, storage = 28382, rewards = {{2160, 10}, {2222, 2}, {3232, 2}}}, ["Rat"] = {killed = 10, storage = 28383, rewards = {{2160, 10}, {2222, 2}, {3232, 2}}}, } então eu irei adicionar o monstro Dragon na tabela, ela ficara assim: local KILL = { ["Demon"] = {killed = 50, storage = 28382, rewards = {{2160, 10}, {2222, 2}, {3232, 2}}}, ["Rat"] = {killed = 10, storage = 28383, rewards = {{2160, 10}, {2222, 2}, {3232, 2}}}, ["Dragon"] = {killed = 25, storage = 28384, rewards = {{2160, 10}, {2222, 2}, {3232, 2}}}, } lembrando que quando você adicionar um novo monstro, você também precisa modificar o número storage, para não dar conflito, em killed é o número necessário de monstros que você precisa matar para ganhar a recompensa, em rewards você pode adicionar ou remover os items ai fica por sua escolha. http://pastebin.com/KVZ0Wb57
  18. Boa noite, to com problemas aqui, tentei fazer um script que quando um player do ot morre, aparece uma msg para todo o servidor, nao sei oque esta errado, segue o script abaixo: ---------------------------------------------------------------------------------------------------------------------------------------------------- Script: function onKill(cid, target, lastHit) if isPlayer(target) == TRUE then doBroadcastMessage("O jogador ".. getCreatureName(cid) .." ["..getPlayerLevel(cid).."] acabou de matar o Noob " .. getCreatureName(target) .. " ["..getPlayerLevel(target).."!") end return TRUE end ---------------------------------------------------------------------------------------------------------------------------------------------------- Está ai, alguem que tem algum script desse tipo desejado pode me passar? Desde já, Agraceço.
  19. Olá galera, vim trazer um script de experience ring, diferente, não é por tempo, mas por experiência ganhada, sim isso mesmo. /data/creaturescripts/scripts/? iE8HesJq[/pastebin] login.lua: registerCreatureEvent(cid, "exp_ring") creaturescripts.xml: <event type = "kill" name = "exp_ring" event = "script" value = "area_exp.lua"/> É isso, espero que gostem, qualquer erro, bug ou dúvida, só avisar.
  20. Mudando Skills Iniciais Olá Ékzordes, hoje precisei de uma script básica e notei que aqui no xTibia não tem exatamente como eu queria(a um tempo atras, eu até pedi uma dessa, mas me entregaram diferente), então, em vez de eu sugar de algum fórum, decidi eu mesmo criar e compartilhar com vocês, sendo assim meu primeiro tópico tutorial. Ela é bem simples, quando você loga com um personagem, ela identifica a classe, verifica se a skill atual é menor que a configurada por você e se for menor, ele adiciona a quantidade que você configurou menos a quantidade atual, ou seja, vai ficar com a quantidade que você configurou... Não coloquei Storage pra fazer só na primeira vez que logar, porque se você coloca esse número como skill inicial, é porque você não deseja que o player tenha menos skill que isso, então, caso ele morra e perca a skill (fique menor que a inicial) ela vai voltar pro mesmo valor da inicial. Então vamos ao que interessa. 1 - Adicionar a tag em Creaturescripts.xml Abra o creaturescripts.xml em: Pasta do seu OT\data\creaturescripts\creaturescripts.xml 1.1 - Em uma das linhas entre <creaturescripts> e </creaturescripts> adicione a tag: <event type="login" name="Start Skills" event="script" value="startskills.lua"/> 2 - Registre o CreatureEvent (Não sei se é necessário, se não for, me avisem.) Abra o login.lua em: Pasta do seu OT\data\creaturescripts\scripts\login.lua 2.1 - Procure por alguma linha que comece com "registerCreatureEvent" e logo em baixo dela coloque: registerCreatureEvent(cid, "Start Skills") 3 - Abra o bloco de notas, adicione a seguinte script dentro: function onLogin(cid) local Mages = 60 local playerVoc = getPlayerVocation(cid) local reqTries = getPlayerRequiredSkillTries local Mages = { ML = 60, Shield = 20 } local Paladin = { Distance = 80, Shield = 80, ML = 20 } local Kina = { Sword = 80, Axe = 80, Club = 80, Shield = 80, ML = 9 } if playerVoc == 1 then if getPlayerMagLevel(cid) < Mages.ML then doPlayerAddMagLevel(cid, Mages.ML - getPlayerMagLevel(cid)) end if getPlayerSkill(cid, SKILL_SHIELD) < Mages.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Mages.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end elseif playerVoc == 2 then if getPlayerMagLevel(cid) < Mages.ML then doPlayerAddMagLevel(cid, Mages.ML - getPlayerMagLevel(cid)) end if getPlayerSkill(cid, SKILL_SHIELD) < Mages.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Mages.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end elseif playerVoc == 3 then if getPlayerSkill(cid, SKILL_DISTANCE) < Paladin.Distance then doPlayerAddSkill(cid, SKILL_DISTANCE, Paladin.Distance - getPlayerSkill(cid, SKILL_DISTANCE)) end if getPlayerSkill(cid, SKILL_SHIELD) < Paladin.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Paladin.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end if getPlayerMagLevel(cid) < Paladin.ML then doPlayerAddMagLevel(cid, Paladin.ML - getPlayerMagLevel(cid)) end elseif playerVoc == 4 then if getPlayerSkill(cid, SKILL_SWORD) < Kina.Sword then doPlayerAddSkill(cid, SKILL_SWORD, Kina.Sword - getPlayerSkill(cid, SKILL_SWORD)) end if getPlayerSkill(cid, SKILL_CLUB) < Kina.Club then doPlayerAddSkill(cid, SKILL_CLUB, Kina.Club - getPlayerSkill(cid, SKILL_CLUB)) end if getPlayerSkill(cid, SKILL_AXE) < Kina.Axe then doPlayerAddSkill(cid, SKILL_AXE, Kina.Axe - getPlayerSkill(cid, SKILL_AXE)) end if getPlayerSkill(cid, SKILL_SHIELD) < Kina.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Kina.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end if getPlayerMagLevel(cid) < Kina.ML then doPlayerAddMagLevel(cid, Kina.ML - getPlayerMagLevel(cid)) end end return TRUE end 3.1 - Agora salve com o nome startskills.lua na pasta: Pasta do seu OT\data\creaturescripts\scripts\login.lua 4 - Reinicie ou inicie o seu OT e pronto. Caso utilize Mysql, vá no PhpMyAdmin e tire as skills dos samples. Bem, sei que é possível diminuir essa script mas eu não tenho conhecimento pra isso, caso alguém se interesse por diminui-la fique a vontade, adiciono ela no tópico e coloco os devidos créditos. Primeiro de muitos tutoriais, no nível conforme eu for sabendo. Até logo. Créditos: Spectrus
  21. Olá pessoal. Após muito procurar e não encontrar, tive que vasculhar no código fonte de compilação do Ot Server em como encontrar algo para remoção dos Addons dos jogadores. Realmente, não é algo facil, mas vou postar aqui o que eu consegui fazer. Quem sabe, alguém conhece alguma forma melhor e possa passar para mim também! Bem, vamos lá? Primeiramente, o script vai funcionar no login do jogador. Resumidamente, o script irá verificar se o jogador possui um StorageValue e, caso não possua, vai deletar os addons de todos os outfits possíveis e atribuir um valor para o StorageValue. Para criar este script, você primeiro deverá criar o arquivo .lua de script. Aqui, irei chama-lo de 'removeraddon.lua'. Geralmente, ele deve ser salvo em 'data\creaturescripts\scripts'. -- Funcao para remover Addon dos Jogadores no Login function onLogin(cid) -- Código do Storage que ficara armazenada a informação. Altere para uma numeração de acordo com sua necessidade. local storageNumber = 3004 -- Links para os outfits dos jogadores. Caso você tenha alterado ou criado novos LookTypes, os mesmos deverão ser adicionados nesta lista. maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335, 367, 430, 432, 463, 465, 472} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336, 366, 431, 433, 464, 466, 471} -- Verificamos se o valor do Storage do jogador (Aquele informado acima) é diferente de 1, se for, significa que temos que exluir os Addons if getPlayerStorageValue(cid,storageNumber) ~= 1 then -- Este 'for' irá percorrer todos os registros dos outfits masculinos e remover o addon 1 e o addon 2. for _, uid in pairs(maleOutfits) do doPlayerRemoveOutfit(cid, uid, 1) doPlayerRemoveOutfit(cid, uid, 2) end -- Ja este, irá remover dos outfits femininos. for _, uid in pairs(femaleOutfits) do doPlayerRemoveOutfit(cid, uid, 1) doPlayerRemoveOutfit(cid, uid, 2) end -- Ao final, vamos definir o StorageValue como 1 para que esse processo não seja executado mais de uma vez. setPlayerStorageValue(cid, storageNumber, 1) end -- Um return true declara que a função terminou. Não é necessário mas evita callbacks para a função. return true end Agora que o arquivo de script foi criado, basta criar uma linha de evento no creaturescripts.xml, de acordo com o que segue: <event type="login" name="RemoverAddon" event="script" value="removeraddon.lua"/> Lembre-se de alterar o value caso você tenha criado o arquivo com outro nome. Não é necessário atribuir a função ao 'login.lua', pois funções de Login são executadas automaticamente. Espero que eu tenha ajudado algumas pessoas por ai que precisam executar este tipo de função. Ela será bem útil quando um servidor precisar ser resetado ou mesmo, quando a forma de obtenção dos Addons mudar. Um abraço a todos. P.S: Desculpa pela indentação do script. Fica difícil indentar ele pela ferramenta aqui do fórum.
  22. Aew galera hj vou ensinar como criar uma Mensagem de boas vindas, é fácil e pratico. Pra criar uma mensagem de boas vindas tem q ser De onLogin. Vá no creaturescripts e abra o creaturescripts.xml e adicione essa tag. <event type="login" name="MENSAGEM" event="script" value="msg.lua"/> depois vá no scripts, e crie um arquivo.lua lá, com o nome de msg. Quando vc abrir o arquivo.lua copie e cole lá dentro \/ function onLogin(cid) doCreatureSay(cid, 'msg !', TALKTYPE_ORANGE_1) end Vamos lá. Tai ai, hj ensinei como criar um script fácil e simples de Boas vindas . Espero que gostem. Créditos: euuuuu
  23. Olá, hoje vim trazer um sistema que vi bastante gente pedindo ele esta a venda na Jhon-soft e em outras lojas de scripts(acho isso uma puta falta de sacanagem). - Esse sistema foi desenvolvido como forma de alterar o meio de regeneração dos jogadores de determinadas vocações; - É um sistema muito bom pra priorizar o pvp e o constante up-level; - O sistema aumenta tanto a regeneração de life quanto de mana isso levando em consideração level atual e vocação; Primeiramente vá em /data/creaturescripts/scripts crie um arquivo chamado "regeneration" e adicione o seguinte conteúdo dentro: yyNHPxyR[/pastebin] em creaturescripts.xml: <event type = "login" name = "Regeneration" event = "script" value = "regeneration.lua"/> Para o sistema funcionar com total funcionalidade você deve tirar o regeneration das vocações. Se não sabe fazer vá em /data/xml/vocations e deixa isso gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="15" gainmanaticks="2.5" gainmanaamount="45" tudo 0, mas somente nas vocações adicionadas no script.
×
×
  • Create New...