Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''script''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 67 registros

  1. Valentine's Card System!

    Informações = { Nome = Valentine's Card System Autor = Iuri Mandello, ideia nesse tópico : http://forums.otserv.com.br/f330/cartao-de-amor-139041/ Versão testada = TFS 0.3.5 } Boa tarde,ainda não tenho quase nenhum script postado no fórum, mas prometo a partir de agora me dedicar mais ao fórum (Y) Informações Bom vamos ao que interessa, esse script da uma ultilidade a mais ao Valentine's Card, com ele você pode enviar e receber cartões de amor. Comandos /love Fulano,mensagem -- Envia um cartão para a pessoa, se ele estiver online receberá na hora senão receberá no login. /love info -- Informações sobre o script Script Crie um arquivo chamado love.lua na pasta Talkactions/scripts e coloque isso dentro: function onSay(cid,words,param,channel) if param == 'info' then return doPlayerPopupFYI(cid, 'Valentine s Card System v 1.0 by Iuri Mandello\a Comandos: /love Player,Mensagem = Envia o cartão para o player.') end local t1,t2 = param:match('(.-),%s*(.+)')-- Valeu Mock if t1 == nil then return doPlayerSendTextMessage(cid,22,"Select a player to send the message") end if (getPlayerGUIDByName(t1) == nil) then return doPlayerSendTextMessage(cid,22,"Player does not exist") end if t2 == nil then return doPlayerSendTextMessage(cid,22,"No message specified") end if string.len(tostring(t2)) > 100 then return doPlayerSendTextMessage(cid,22,"The message is long") end if string.len(tostring(t2)) < 0 then return doPlayerSendTextMessage(cid,22,"The message is short") end if isOnline(t1) then local item = doPlayerAddItem(getPlayerByName(t1),6538) doSetItemText(item, tostring(t2)) doPlayerSendTextMessage(cid,22,"Card send successfully") return TRUE end if io.open("data//love//".. tostring(t1) ..".txt") == nil then local file = io.open("data//love//".. tostring(t1) ..".txt","w") file:write("by ".. getPlayerName(cid) ..":".. tostring(t2) .."\n") file:close() doPlayerSendTextMessage(cid,22,"Card send successfully") else local file = io.open("data//love//".. tostring(t1) ..".txt","a+") file:write("by ".. getPlayerName(cid) ..":".. tostring(t2)) file:close() doPlayerSendTextMessage(cid,22,"Card send successfully") end return TRUE end Tag xml para ser colocada em talkactions.xml: <talkaction words="/love" event="script" value="love.lua"/> Crie um arquivo chamado lovelogin.lua na pasta creaturescripts/scripts e coloque isso dentro: function onLogin(cid) local file = io.open("data//love//".. getCreatureName(cid) ..".txt") if file ~= nil then doPlayerSendTextMessage(cid,22,"You received one love card!") for msg in io.lines("data//love//".. getCreatureName(cid) ..".txt") do item = doPlayerAddItem(cid,6538) doSetItemText(item,msg) end file:close() os.remove("data//love//".. getCreatureName(cid) ..".txt") end return TRUE end Tag para ser colocada em creaturescripts.xml: <event type="login" name="Love" script="lovelogin.lua"/> Agora abra o arquivo creaturescripts/scripts/login.lua e adicione entes do último return TRUE: registerCreatureEvent(cid, "Love") <font face="Comic Sans MS"><font size="4"><font size="2"><font size="4"><font size="2"><font size="4"><font size="2"> Você precisará da OTAL ou simplesmente coloque isso em lib/functions.lua ou arquivo semelhante: function isOnline(name)--by mock local players = getOnlinePlayers() name = string.lower(name) for i, player in ipairs(players) do player = string.lower(player) if name == player then return TRUE end end return FALSE end Por último, crie uma pasta chamada love na pasta data do seu servidor e está pronto Espero que tenham gostado, e por favor não faça comentários como "Legal","Vou usar no meu server", se quiser agradecer use o botão Thanks,use o tópico somente para dúvidas e bugs. Esse script é exclusivo da OTnet, se encontrar em outro fórum por favor avise
  2. [bonus systen] ideia veio do nada =)

    nome da ideia = bonus systen objetivo = dar bonus a itens criador da ideia = luiz honorio (SEU ANALFABETO) dia que tive a ideia = 17/02/2010 13:35 hrs por que tive essa ideia = porque nao tenhu mas nada pra faser BEM SEM INRROLASSÃO A minha idéia é o seguinte a pessoa usa pedras em um itens e ele ganha um bonus, cada pedra tem seu bonus por exenplo vc cata um stone de um monstro e nessa usa essa stone num iten e entao esse iten ganha + skill ou ml ou defesa contra elementos ou até se for possivel dano mas isso é sonhar de +, bem se eu for colocando bonus nos itens assim da pra dar vantagen aos mage paly e kina, por exenplo no upgrate systen do mock, eu achei uma ótima idéia aquilo mas se parar pra penssar num tem nada pra aumenta a forssa das wand essa é uma idéia pro mock tbm, mock vc podia por no upgrate system um bonus pra wand :style: o mundo esta cheio de pessoas que num tem nada pra faser como eu entao fassa algo que preste poste uma ideia na otnet :loool: gosto da ideia ??? due v$
  3. [Reputation Points²]

    Bom esses dias estava jogando um server chamado Elfenwar Feito pelo god_dreamer Aqui Do Forum... E Vi o "Rep" System Eu Vi Que um Cara Queria Um Script Desse Também, Mais Eu estava Precisando Muito , Se Alguem Fizesse Eu Agradeçeria De Mais >.< [idéia] A Ideia Era A Seguinte : Toda Vez Que Voce Matasse um Player Inocente [sem pk] Ganhasse Rep Points Negativos [-rep] e quando matasse um pk ganhasse Rep Positivo [+rep] E Criar Rank De Rep Por Exemplo : [Exemplo Do Elfenwar] E Em Vez De Ganhar um Item ou Medalha Ganhasse um Outfit [ExemploElfenwar] Os Ranks Poderiam Ser : Negativo ~ Noob Quando Começa - 0 Points Pk ~ -300 rep points ~ Nao Ganha Outfit Thief ~ 1000 Rep Points ~ Nao Ganha Outfit Hunter of noobs ~ 1500 Rep Points ~ Ganha roupa de Necromancer Evil ~ 2500 Rep Points ~ Ganha Roupa De Grim Reaper Serial Killer ~ 3500 Rep Points ~ Ganha Roupa De Ferumbras Power Abuser ~ 5000 ~ Ganha Roupa Do Vampire Overlord -- Para Mulher Vampire Bride Positivo ~ Noob Quando Começa Pk Killer ~ 300 Rep Points ~ Nao Ganha Outfit Pk Hunter ~ 1000 Rep Points ~ Nao Ganha Outfit Hero ~ 2500 Rep Points ~ Ganha Roupa De Hero WorldSafer ~ 3500 Rep Points ~ Ganha Roupa de Undead Gladiator Super-hero ~ 5000 ~ Ganha Roupa De Barbarian Skullhunter -- Pra Mulher Barbarian Brutetamer E Se Possivel Um Comando Como !reputation Mostra Quantos Rep Points Voce Tem E Seu Nick De Reputação Exemplo You Have -5000 Rep Points. You Are Power Abuser E Que Quando Falasse o Comando !reputation Mudasse a ropa que voce tem , exemplo eu tenho +2500 rep points , eu falo !reputation eu mudo a ropa automaticamente para Hero e a cada player killado pra +rep ou -rep ganhasse 30 rep points E Se nao fosse pedir de mais , quando mudasse a ropa , subisse o nome do rank do player em cor aleatoria !! como no elfenwar O= Se Alguem Souber Fazer Isso éee Muitoo Ninja :fist: Desde Ja Agradeço ! (Obs¹ Retirei a maioria das ideas do elfenwar) (Obs ² God dreamer voce me baniu no elfenwar por sv adversment era meu primo =/) (Obs ³ Se Eu Errei Em Alguma Coisa ou Voces Tem Alguma Sugestao Podem Falar)
  4. Nord War V2.5 (Times, Frags+Level...)

    Nome Nord War V2.5 Após muita inatividade, preguiça, calotagem e tudo mais vim dar um presentinho de Natal para todos. O que é um war system? Lembrando que o meu war system não é o mesmo que o do X-Dream War, eu refiz ele pra ficar mais leve e menor. ----Instalando---- Em data\lib crie um arquivo war.lua com o seguinte código: --//Nord's War System V2.5 LEVEL = {START = 150, GAIN = 2} TEAMS = { [1] = { COUNT = function() return getGlobalStorageValue(101021) end, COLOR = {0, 88, 95, 0}, EFFECT = 47}, [2] = { COUNT = function() return getGlobalStorageValue(101022) end, COLOR = {0, 94, 132, 114}, EFFECT = 48} } TOWNS = { {"Thais", {1, 2}}, {"Edron", {3, 4}}, {"Venore", {5, 6}}, {"Carlin", {7, 8}}, {"Darashia", {9, 10}} } maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 253, 254, 255} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 264} setGlobalStorageValue(101010, 1) function doPlayerSetLevel(cid, level) doPlayerAddExperience(cid, getExperienceForLevel(level) - getPlayerExperience(cid)) end function doPlayerAddLevel(cid, amount) local level = getPlayerLevel(cid) if level < 250 then doPlayerAddExperience(cid, getExperienceForLevel(level + amount) - getPlayerExperience(cid)) end end team = { get = function(id) if id == 0 then return (TEAMS[1].COUNT() < TEAMS[2].COUNT()+math.random(0, 1) and 1 or 2) else return (TEAMS[1].COLOR[4] == getCreatureOutfit(id).lookFeet and 1 or 2) end end, add = function(id, n) if n == 0 then setGlobalStorageValue(101021, 0) setGlobalStorageValue(101022, 0) else setGlobalStorageValue(101020+id, TEAMS[id].COUNT() + n) end return TRUE end } team.add(0, 0) event = { login = function(cid) if getPlayerGroupId(cid) <= 1 then local teamid = team.get(0) if teamid > 0 then team.add(teamid, 1) local NOW = getGlobalStorageValue(101010) local color = TEAMS[teamid].COLOR doCreatureChangeOutfit(cid, {lookType = getPlayerSex(cid) == 1 and maleOutfits[math.random(#maleOutfits)] or femaleOutfits[math.random(#femaleOutfits)], lookHead = color[1], lookBody = color[2], lookLegs = color[3], lookFeet = color[4], lookAddons = math.random(3)}) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), TRUE) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerSetTown(cid, TOWNS[NOW][2][teamid]) doTeleportThing(cid, getTownTemplePosition(TOWNS[NOW][2][teamid]), FALSE) doPlayerAddSoul(cid, -getPlayerSoul(cid)) doSendMagicEffect(getCreaturePosition(cid), TEAMS[teamid].EFFECT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Map: ".. TOWNS[NOW][1] .."\nTeam: ".. tostring(teamid) .." (".. TEAMS[1].COUNT() ..",".. TEAMS[2].COUNT() ..")\n \nChecking...\nIP: ".. doConvertIntegerToIp(getPlayerIp(cid)) .."\nMC Safe: ON\nMC Status: Clean") doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[X-Dream]+[Nord War]: Para mais informações /info") if getPlayerStorageValue(cid, 20000) == -1 then setPlayerStorageValue(cid, 20000, os.time(t)) end end end return TRUE end, logout = function(cid) if getPlayerGroupId(cid) <= 1 then team.add(team.get(cid), -1) end return TRUE end, look = function(cid, thing) if not isPlayer(thing.uid) or getPlayerGroupId(thing.uid) > 1 then return TRUE end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ""..getPlayerName(thing.uid).." ("..getPlayerVocationName(thing.uid)..")\n[Lv: "..getPlayerLevel(thing.uid).."][Frags: "..getPlayerSoul(thing.uid).."]") end, combat = function(cid, target) if cid == target or getCreatureOutfit(cid).lookFeet == getCreatureOutfit(target).lookFeet then return FALSE end return TRUE end, kill = function(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) then if isPlayer(lastHitKiller) then doPlayerAddSoul(lastHitKiller, 1) doPlayerAddLevel(lastHitKiller, LEVEL.GAIN) doPlayerSendTextMessage(lastHitKiller, MESSAGE_INFO_DESCR, 'Kill [+'..LEVEL.GAIN..' levels]') if isPlayer(mostDamageKiller) and mostDamageKiller ~= lastHitKiller then doPlayerAddSoul(lastHitKiller, 1) doPlayerSendTextMessage(mostDamageKiller, MESSAGE_INFO_DESCR, 'Kill [+'..LEVEL.GAIN..' levels]') doPlayerAddLevel(mostDamageKiller, LEVEL.GAIN) end end if LEVEL.START ~= nil then doPlayerSetLevel(cid, LEVEL.START) end local oldPosition = getCreaturePosition(cid) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), TRUE) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doSendMagicEffect(getCreaturePosition(cid), TEAMS[team.get(cid)].EFFECT) doSendMagicEffect(oldPosition, 65) doRemoveConditions(cid, FALSE) doPlayerAddSoul(cid, -getPlayerSoul(cid)) return FALSE end return TRUE end, map = function(clean, save) NOW = getGlobalStorageValue(101010) >= #TOWNS and 1 or getGlobalStorageValue(101010) + 1 setGlobalStorageValue(101010, NOW) doBroadcastMessage("Map changed\n[".. TOWNS[NOW][1] .."]\nNext map in 30 minutes.", MESSAGE_INFO_DESCR) team.add(0, 0) for _, cid in ipairs(getPlayersOnline()) do if getPlayerGroupId(cid) <= 1 then local teamid = team.get(cid) team.add(teamid, 1) doPlayerSetTown(cid, TOWNS[NOW][2][teamid]) doTeleportThing(cid, getTownTemplePosition(TOWNS[NOW][2][teamid]), FALSE) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), TRUE) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doRemoveConditions(cid, FALSE) doPlayerAddSoul(cid, -getPlayerSoul(cid)) end end if clean == TRUE then doCleanMap() end if save == TRUE then doSaveServer() end end } Procure em data\lib o arquivo data.lua e no final do arquivo pule uma linha e adicione isto: dofile(getDataDir() .. "lib/war.lua") Agora em data\creaturescripts\scripts crie de novo um arquivo war.lua, mas desta vez com este código: function onLogin(cid) registerCreatureEvent(cid, "WarLook") registerCreatureEvent(cid, "WarKill") registerCreatureEvent(cid, "WarLogout") registerCreatureEvent(cid, "WarCombat") return event.login(cid) end function onLogout(cid) return event.logout(cid) end function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) return event.kill(cid, lastHitKiller, mostDamageKiller) end function onLook(cid, thing, position, lookDistance) return event.look(cid, thing) end function onCombat(cid, target) return event.combat(cid, target) end Em data\creaturescripts abra o arquivo creaturescripts.xml e adicione isto: <event type="preparedeath" name="WarKill" event="script" value="war.lua"/> <event type="login" name="WarLogin" event="script" value="war.lua"/> <event type="logout" name="WarLogout" event="script" value="war.lua"/> <event type="look" name="WarLook" event="script" value="war.lua"/> <event type="combat" name="WarCombat" event="script" value="war.lua"/> Em data\globalevents\scripts crie um arquivo map.lua com este código: function onThink1() broadcastMessage("Map change in 1 second.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(event.map, 1000, TRUE, TRUE) return TRUE end function onThink2() broadcastMessage("Map change in 2 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink1, 1000) return TRUE end function onThink3() broadcastMessage("Map change in 3 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink2, 1000) return TRUE end function onThink4() broadcastMessage("Map change in 4 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink3, 1000) return TRUE end function onThink5() broadcastMessage("Map change in 5 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink4, 1000) return TRUE end function onThink6() broadcastMessage("Map change in 6 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink5, 1000) return TRUE end function onThink7() broadcastMessage("Map change in 7 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink6, 1000) return TRUE end function onThink8() broadcastMessage("Map change in 8 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink7, 1000) return TRUE end function onThink9() broadcastMessage("Map change in 9 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink8, 1000) return TRUE end function onThink10() broadcastMessage("Map change in 10 seconds.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink9, 1000) return TRUE end function onThink11() broadcastMessage("Map will change in 1 minute.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink10, 50000) return TRUE end function onThink(interval, lastExecution) broadcastMessage("Map will change in 5 minutes.", MESSAGE_STATUS_CONSOLE_BLUE) addEvent(onThink11, 240000) end Em data\globalevents abra o arquivo globalevents.xml e coloque isto: <globalevent name="map" interval="1500" event="script" value="map.lua"/> Tudo pronto, só configurar ----Configurando---- No arquivo data\lib\war.lua que há as configurações, vejamos então: START é o level em que qualquer jogador irá começar, neste caso 150. GAIN é quantos levels o player ganha por matar um adversário. Apenas o que está em vermelho é importante COLOR defini as cores de cada time conforme este esquema: {CorDaCabeça, CorDoCorpo, CorDaPerna, CorDoPé}, no caso o corpo do time 1 vai ser azul porque 88 corresponde ao azul. EFFECT defini o Nº do efeito quando o player loga (aquela bolinha azul estilo teleport), se eu quiser que o time 2 faça um efeito de chamas em vés de 48 eu colocaria 36. Esta é a configuração da troca dos mapas. Entre "aspas" é o nome da cidade. Dentro das chaves os números 1 e 2 corresponde ao TownId dos times, explicando melhor... Quando você configura o mapa existe a ferramenta Edit Towns, nela você configura a posição dos templos, se por exemplo o templo/town de Nº 7 é em Port Hope e eu quero que lá comece o time 1 e no templo/town de Nº 9 é próximo de Port Hope e eu quero que lá comece o time 2 na configuração ficaria assim: {"Port Hope", {7, 9}} No config.lua certifique-se de que essas duas opções estejam como as abaixo: allowChangeColors = "no" noDamageToSameLookfeet = "yes" Ow, TIO! Eu quero usar só uma cidade, tem algum problema? Mas TIO! Eu não quero nem que volte pro templo, como faço? TIUUÔ! Eu to dando look e fica aquela coisa estranha: Nord (Sorcerer) [Lv:150][Frags:0], da pra deixa como tava antes? As outfits (lookType), são escolhidas automaticamente, incluindo as outfits de barbarian (male/female). Qualquer dúvida postem no tópico (talvez eu responda, tenho muita ausência), mas por PM nem pensar. Bom divertimento e FELIZ NATAL, O NATAL É DE JESUUUS! :yes: OBS: Natal já passou /\, FELIZ ANO NOVO!
  5. Escalar System

    E ae Galera, Vo postar aqui um script que pode ser util pra qm gostad e rpg e usa mta criatividade! Agora o Script!Vá em actions/tolls e add um arkivo chamado Scall.lua dentro dele cole isto: local holeId = {[color=Blue]3369, 7062, 7064, 7066, 392, 408, 409, 427, 428, 430, 462, 469, 470, 482, 484, 485, 489, 924, 3135, 3136[/color]} function onUse(cid, item, fromPosition, itemEx, toPosition) local groundTile = getThingfromPos(toPosition) if groundTile.itemid == 7062 or groundTile.itemid == 7066 or groundTile.itemid == [color=Red]3362[/color] then doTeleportThing(cid, {x = toPosition.x, y = toPosition.y - 1, z = toPosition.z - 1}, FALSE) elseif isInArray(holeId, itemEx.itemid) == TRUE then local hole = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE}) if hole.itemid > 0 then doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, FALSE) else doPlayerSendCancel(cid, "Sorry, not possible.") end else return FALSE end return TRUE end Depois vá em actions.xml e coloque: ----------CONFIGURANDO--------- é o id da corda, no caso a elvenhair é os pisos aond pode ter a montanha/parede é o id da montanha/parede que vc vai escalar! pronto Configure e gogo rpg! c quiser deichar assim eh melhor... pois voce pod bugar algo...c vc souber mudar direitin, use a criatividade! Nesse script vc esacala a Stone wall com a elvehair rope! Ate a proxima! :yes:
  6. Quest Manera!

    Nome: Quets Criativa Autor: eu msm! Versão: TESTADO Em 8.40 Tipo: Action/quest Poh galera, esses dias tava eu tendo umas ideas pro meu ot, e pensei numa base pra fazer uma quest manera, e usei essa! Supomos q seu server tenha 4 cidades; Uma quest criativa poderia ser: em cada cidade você faz uma pequena sala. Nela você coloca um piso especial. uma placa indicando que se quer participar da quests que fique em cima dele! ai voce faz isso nas 4 cidades! e em uma voce coloca uma alavanca! ( na principal de preferencia ) Ao puxar a alavanca, os players das 4 cidades sao teleportados para uma quest!!! manero né? eu axo...hahuhua agora como fazer? crie em action/scripts/quests um arkivo renomeie para o nome que quiser!e coloque: Coloque isso em actions/scripts/quests local playerPosition = { [color=Magenta]{x = 217, y = 364, z = 7, stackpos = STACKPOS_TOP_CREATURE}, {x = 218, y = 364, z = 7, stackpos = STACKPOS_TOP_CREATURE},[/color] } local newPosition = { [color=YellowGreen]{x = 216, y = 375, z = 7}, {x = 216, y = 376, z = 7},[/color] } -- Do not modify the declaration lines below. local player = {0, 0, } local failed = FALSE function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then for i = 1, 2 do failed = TRUE player[i] = getThingfromPos(playerPosition[i]) if player[i].itemid > 0 then if isPlayer(player[i].uid) == TRUE then if getPlayerStorageValue(player[i].uid, [color=DarkSlateBlue]30015[/color]) == -1 then if getPlayerLevel(player[i].uid) >= [color=Blue]10[/color] then failed = FALSE end end end end if failed == TRUE then doPlayerSendCancel(cid, "Sorry, not possible.") return TRUE end end for i = 1, 4 do doSendMagicEffect(playerPosition[i], CONST_ME_POFF) doTeleportThing(player[i].uid, newPosition[i], FALSE) doSendMagicEffect(newPosition[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid + 1) elseif item.itemid == 1946 then doPlayerSendCancel(cid, "Sorry, not possible.") end return TRUE end dpois vá em actions.xml e add: <action uniqueid="30015" script="quests/NOMEDOSCRIPT.lua"/> Configurando! è a posição do player, aonde ele deve estar na hra q o principal puxar a alavanca! (configure quantos players quiser é só adicionar mais tags igual eu markei) è a posição que os players vao ser teleportados! 10 é o level do player coloque qual vc kiser! é o unique id q vc vai colocar na alavanca no map editor! isso tudo acima é a configuração basica! se quiser mais detalhes! msg me! Agora não skece de colocar a quest que vc quer! use a criatividade! Foi mal qualquer erro! so novo ak na area... vlw :yes:
  7. Joker[monster]

    Nome do monstro:Joker Versão:8.31 Testado em:YourOt's Créditos:100% Corinback Bom pessoal,esses dias estava pensando em que bixo eu poderia criar,então pensei no maior inimigo do Batman,o Coringa(Joker).Aí criei e até gostei dele,então resolvi postar... Para cria-lo em seu OT sigua as seguintes instruções: Vá em Data/Monster/Bosses , copie e cole um arquivo XML apague tudo e copie isso: Salve e agora vá em Data/Monster/monsters.XML Adicione lá: <monster name="Joker" file="Bosses/joker.xml"/> E pronto seu monstro já ta adicionado! O Joker vem com o Outfit do verdadeiro Coringa fikou bem legal! Agora vai uma SS: Espero que tenham gostado! coment plz..... By: Corinback.
  8. Magias Totalmente novas e exclusivas!

    Fala galera, primera vez que to postando uma spell ak no forum! então qualquer erro me avisem! =) Seguint, fiz um pacote com 4 magias! sendo elas: exevo fury: Para sorcerers ( dmg ) exori expert: para Kinas ( dmg ) exevo defiler: Druids ( Dmg ) exana mana "player :kina e palla ( tira a mana do cidadao ) postarei o ss das 3 de dmg, pois a outra não presisa de ss Lembrando que os dmgs, as classes que vão usar, tipo de dano é tudo configuravel, então qualquer coisa me manda uma msg q eu ajudo! Nome: Spells Pack Tipo de script: spell Autor: Eu Versão 8.4 Server TESTADO: TFS 0.2x Versão: 1.0 essa é a exevo defiler (dmg de poison) essa acima é a exevo fury e essa a exori expert! Essas tags, que devem ser adicionada em spells.xml e estão configuradas para os scipts q eu postei, qualquer modificação nos scripts deve ser modificados ak! Abaixo a exevo fury <instant name="Fury of Death" words="exevo fury" lvl="75" mana="770" direction="1" exhaustion="1500" needlearn="0" script="attack/fury.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> Abaixo a Exevo Defiler <instant name="Defiler Wave" words="exevo defiler" lvl="80" mana="810" direction="1" exhaustion="1500" needlearn="0" script="attack/defiler.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> Abaixo a Exori expert <instant name="Expert Exori" words="exori expert" lvl="130" mana="390" prem="1" needweapon="1" exhaustion="1100" needlearn="0" script="attack/superzerker.lua"> <vocation name="Knight" /> <vocation name="Elite Knight" /> </instant> Abaixo a Mana Drain <instant name="Mana Drain" words="Exana Mana" lvl="58" mana="230" prem="1" aggressive="0" needtarget="1" params="1" exhaustion="2200" needlearn="0" script="attack/mana drain.lua"> <vocation name="Elite Knight"/> <vocation name="Royal Paladin"/> </instant> Atenção, as magias forão testadas em TFS 0.2x Mais deve funcionar nos outros. Todas as spells deven ser colocadas na pasta attack,\data\spells\scripts\attack c mudar a pasta, mude tambén no spells.xml Isso ai, espero ter ajudado! Link das magias: http://rapidshare.com/files/229956807/scripts.rar.html Créditos: 90% Meus 10% do Slayer (usei de BASE pra fazer a exori expert!) Até a Proxima! :yes:
  9. [8.1] Magia Sacrificio

    ------------------------------- Nome: Magia de Sacrificio Versão: 8.1 Tipo do script: Spells Servidor Testado: Aries 4.0 Autor: Lyndell ------------------------------- Bom, é uma magia bem forte que decha o player com apenas 100 de hp e 200 de mana, ou seja eh meio um sacrificio... a magia nao irá matar o player porque só ira ser feita se ele tiver uma quantidade de hp e mana. script: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -3.6, -30, -5.9, 4) local arr = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) health = getPlayerHealth(cid) mana = getPlayerMana(cid) if mana >= 1500 and health >= 2000 then doPlayerAddHealth(cid, -(health-100)) doPlayerAddMana(cid, -(mana-200)) return doCombat(cid, combat, var) else doPlayerSendTextMessage(cid,22,"Você nao tem mana ou health suficiente.") end end Aqueles valores 100 e 200 sao a vida e mana que o player irá ficar ao usar o spell, você tbm pode mudar quanto de hp e mana o player precisa para executar o spell. Bom... você pega qualquer arquivo, apaga tudu e cola o script dentro dele... Depois disso salve ele como magiadead.lua Feito isso abra seu Spells.xml e cole esse tag: <instant name="death" words="exevo death" soul="5" mana="0" aggressive="1" lvl="200" maglv="5" exhaustion="1" prem="1" enabled="1" script="magiadead.lua"><vocation id="2"/><vocation id="6"/><vocation id="5"/><vocation id="1"/><vocation id="3"/><vocation id="4"/><vocation id="7"/><vocation id="8"/></instant> Caso queiram mudar algo no script ou no tag pode, eu recomendo deixar assim mesmo. Gostaram? if yes then Comentem (Y) end
  10. [8.1] Fishing Evolution

    ------------------------------- Nome: Fishing Evolution Versão: 8.10 Tipo do script: Action Servidor Testado: Aries 0.4.5 Autor: Mukah ------------------------------- Como disse no meu primeiro script, do Plantinha System, postaria mais scripts meus... Dai eu pensei assim: Eu to sem scripts pra coloca lá... eu tenho uns só que estão muito foda pra ficar postano. MAS... Eu pensei melhor. Como gostei dos elogios, axei que vocês iriam gostar desse script tbm! (OBS: virem meu fan please *-*) O script eh o seguinte: Vocês conheçem o script de fishing (pesca) tradicional do Tibia certo? Mas este que fiz, ele é modificado! "Fishing Evolution 100 x 0 Fishing Global UHUU!! :lol:" Voltando ao assunto, o script ele pesca todos os tipos de peixe que existe no global! (Mais abaixo vou postar a tabela de peixes) Alem de ele pescar todos os tipos, ele contém outros efeitos (quando você pega o peixe) e ainda por cima necessita de skills para poder pescar os peixes! Inclusive, no final eu vou colocar o script do NPC que compra todos os itens e também o script para comer todos os peixes também! Tabela de peixes: Shrimps - [skill: 0-25+] Fishs - [skill: 26-35+] Northern Pikes - [skill: 36-45+] Green Perchs - [skill: 46-55+] Rainbow Trouts - [skill: 56-65+] Marlins - [skill: 66+] ----------------------------------------------- Bom, vamos para os scripts: Crie um arquivo na pasta "data/actions/scripts/" com o nome de "fishing.lua". fishing.lua -- Script 100% by Mukah -- local useWorms = TRUE local waterIds = {493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625} function onUse(cid, item, fromPosition, itemEx, toPosition) fskill = getPlayerSkill(cid,6) count = math.random(3,7) if isInArray(waterIds, itemEx.itemid) == TRUE then if itemEx.itemid ~= 493 then if useWorms == FALSE or useWorms == useWorms then fish = math.random(1,fskill) if (fish == 2 or fish == 4 or fish == 6 or fish == 8 or fish == 10 or fish == 12 or fish == 14 or fish == 16 or fish == 18 or fish == 20 or fish == 22 or fish == 24) then doPlayerAddItem(cid, 2670, count) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+15)) doPlayerAddSkillTry(cid,6,1) elseif (fish == 26 or fish == 28 or fish == 30 or fish == 32 or fish == 34) then doPlayerAddItem(cid, 2667, 1) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+15)) doPlayerAddSkillTry(cid,6,1) elseif (fish == 36 or fish == 38 or fish == 40 or fish == 42 or fish == 44) then doPlayerAddItem(cid, 2669, 1) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+20)) doPlayerAddSkillTry(cid,6,1) elseif (fish == 46 or fish == 48 or fish == 50 or fish == 52 or fish == 54) then doPlayerAddItem(cid, 7159, 1) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+30)) doPlayerAddSkillTry(cid,6,1) elseif (fish == 56 or fish == 58 or fish == 60 or fish == 62 or fish == 64) then doPlayerAddItem(cid, 7158, 1) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+40)) doPlayerAddSkillTry(cid,6,1) elseif (fish == 66 or fish == 68 or fish == 70 or fish == 72 or fish == 74 or fish == 76 or fish == 78 or fish == 80 or fish == 82 or fish == 84 or fish == 86 or fish == 88 or fish == 90 or fish == 92 or fish == 94 or fish == 96 or fish == 98 or fish == 100 or fish == 102 or fish == 104 or fish == 106 or fish == 108 or fish == 110 or fish == 112 or fish == 114 or fish == 116 or fish == 118 or fish == 120 or fish >= 150) then doPlayerAddItem(cid, 7963, 1) doPlayerRemoveItem(cid, 3976, 1) doSendMagicEffect(toPosition, 53) doPlayerAddExp(cid,math.random(1,fskill+fskill/2+60)) doPlayerAddSkillTry(cid,6,2) else end end end doSendMagicEffect(toPosition, 1) return TRUE end return FALSE end -- Script 100% by Mukah -- Após ter criado o script acima, abra o arquivo "data/actions/actions.xml". Coloque o tag dentro depois do "<actions>" e antes do "</actions>". tag actions <action itemid="2580" script="fishing.lua" allowfaruse="1" /> [Edit_Motivo: Continuação] Bom.. então vamos para o script para COMER todas as comidas... ou melhor: peixes! Provavelmente seu OT já come Fish/Shrimps/Northerns Pikes; Então apenas vao restar Green Perchs/Rainbow Trouts/Marlins. Crie um arquivo na pasta "data/actions/scripts/" com o nome de "peixes.lua". -- Script Aries editado por Mukah -- local text = "" local nutrition = 0 local effect = 50 function onUse(cid, item, frompos, item2, topos) if item.itemid == 7159 then nutrition = [color=Red]50[/color] text = "[color=Blue]Munch.[/color]" elseif item.itemid == 7158 then nutrition = [color=Red]70[/color] text = "[color=Blue]Munch.[/color]" elseif item.itemid == 7963 then nutrition = [color=Red]350[/color] text = "[color=Blue]Munch.[/color]" end if (getPlayerFood(cid) + nutrition > 400) then doPlayerSendCancel(cid,"You are full.") else doPlayerFeed(cid, nutrition * 4) doPlayerSay(cid, text, 16) doRemoveItem(item.uid, 1) if effect < 31 then doSendMagicEffect(getPlayerPosition(cid), 27) end end return 1 end -- Script Aries editado por Mukah -- Pergunta: Ei Muka! Eu quero que os peixes sustente um certo tanto, como faço? Resposta do Muka: Voce edita os números em VERMELHO de acordo com sua escolha! Lembrando que quando o player fica Full, ele fica com 400 de Sustento (Feed) Pergunta: Ok. Mas agora eu quero mudar a FALA! Quero que ele fale "Mukah" em vez de "Munch"! Como eu faço? Resposta: Está vendo as palavras na cor AZUL? Você poderá editar avontade, basta mudar a fala sem tirar as Aspas ("")! Continuando: Agora falta o script do "actions.xml"! Após ter criado o script acima, abra o arquivo "data/actions/actions.xml". Coloque o tag dentro depois do "<actions>" e antes do "</actions>". tag actions <action itemid="7159" script="peixes.lua" /> <action itemid="7158" script="peixes.lua" /> <action itemid="7963" script="peixes.lua" /> Agora falta somente o NPC para vender os peixes (todos)! Crie um arquivo na pasta "data/npc/" e renomeie com o nome de "Perac.xml", um nome já bastante conheçido de alguns OT's baixados. Em seguida abra o arquivo "Perac.xml" e coloque o seguinte script: perac.xml <?xml version="1.0"?> <npc name="Perac" script="data/npc/scripts/fishs.lua" access="3" lookdir="2" autowalk="25"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="128" head="66" body="46" legs="2" feet="89"/> </npc> Agora crie um arquivo na pasta "data/actions/scripts/" com o nome de "fishs.lua". fishs.lua -- Script 100% by Mukah -- local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! I sell fishing rods(100gp) and buy Shrimp(5gp), Fish(20gp), Northern Pikes(40gp), Green Perch(70gp), Rainbow Trout(100gp) and Marlin(500gp).') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'shrimp') or msgcontains(msg, 'shrimps') then sell(cid,2670,getCount(msg),5) elseif msgcontains(msg, 'fish') or msgcontains(msg, 'fishs') then sell(cid,2667,getCount(msg),15) elseif msgcontains(msg, 'northern pike') or msgcontains(msg, 'northerns pikes') then sell(cid,2669,getCount(msg),40) elseif msgcontains(msg, 'green perch') or msgcontains(msg, 'green perchs') then sell(cid,7159,getCount(msg),70) elseif msgcontains(msg, 'rainbow trout') or msgcontains(msg, 'rainbow trouts') then sell(cid,7158,getCount(msg),100) elseif msgcontains(msg, 'marlin') or msgcontains(msg, 'marlins') then sell(cid,7963,getCount(msg),500) elseif msgcontains(msg, 'fishing rod') then buy(cid,2580,1,100) elseif msgcontains(msg, 'bye') and focus == cid and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 talk_start = 0 elseif msgcontains(msg, 'no') then selfSay('Ok. Come back when you need my services.') talk_state = 0 end end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Next Please...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good bye then.') focus = 0 end end end -- Script 100% by Mukah -- Agora só falta adiciona-lo no seu map editor! Como adicionar no map editor? A OTNET tem! Ta ai uma foto do que fiz no meu OT que começei a criar: [Edit_Motivo: Continuação] Ta ai! (Y) Vlws! COMENTA! (Y) e VIRA MEU FAN PLEASE!
  11. Duvida Script

    Tipo to querendo saber se tem como ler o level de um player sem ser cid... por exemplo: getPlayerLevel(nome do cara do ot) ae tipo... se for possivel eu queria montar um npc mais nao sei como faz para ele ler oque vc falar e salvar numa variavel... por exemplo blablabla Ler como sendo (nomedocara) selfSay(o level dele é , ' .. getPlayerLevel(nomedocara) .. '!') entenderao??? isso é possivel??
  12. (pedido) porta que passa dps da quest

    queria sbe se tem como fase uma porta que so passa dps de um teleport npc ou quest tipo a Porta da Força(que ele só pode passar depois de ter feito a quest do Fortress) a porta da Sabedoria(que ele só pode passar depois de ter feito a quest do Rivers Dragon) e a porta da Coragem(que ele só pode passar depois de ter feito a quest da Prison) se tive me ajuda por favor! vlw!
  13. Vampirecoffin Quest

    Testado em: Yurots 1.2 Versão 8.1 Olá, este é o meu primeiro tutorial, espero que gostem... Eu utilizei a action em uma quest em que você chega num local com vários caixões...Em um deles você abre (coloquei a unique ID somente em um caixão), recebe um vampire shield e sai um vampire de cada caixão. Criando a action: Crie um arquivo .lua na pasta data/actions/scripts com o nome vampirecoffin, copie isso e cole lá: Salve o arquivo e feche. Explicando: Em azul a posição do primeiro vampire que irá aparecer. Em vermelho a posição do segundo vampire que irá aparecer. Você pode criar quantas posições quiser, assim poderão ser invocadas mais criaturas...simplesmente insira outra linha abaixo das que possuem as "vamppos" assim: Dessa forma, você pode colocar quantos vampires quiser, isso fica ao seu critério, e também se quiser pode colocar mais de um vampire para ser invocado por caixão, ou até outras criaturas, eu coloquei um vampire ao lado de cada caixão. Em verde a Unique ID utilizada pela quest(a que será colocada no caixão). Em azul ciano o "valor" que será adicionado ao player quando o mesmo usar o caixão(assim a quest não poderá ser repetida várias vezes), ou seja, quando alguém tentar abrir o caixão será checado se ele possuí esse "valor" no seu arquivo, se possuir, a action não será realizada. Em laranja a mensagem recebida ao abrir o caixão. Em amarelo o ID do item que receberá ao abrir usar o caixão. Em roxo as criaturas que serão invocadas, com as respectivas posições. Para serem invocadas outras criaturas como demons, por exemplo, é só alterar assim: Você pode usar demonposX, posiçãodobichoX, como você quiser, estou usando vampposX pois a quest é com vampires. A mesma coisa na seguinte parte, é só alterar na "pos" do início e na "pos" do doSummonCreature: Poderia estar assim: Na parte do doSummonCreature: Ficaria assim: Em rosa a mensagem recebida se você tentar abrir o caixão após ter feito a quest. Agora, vá em data/actions e abra o actions.xml com o bloco de notas, e insira isso em uma linha: Pronto, agora salve e a sua action está pronta. ^^ Imagens da quest: Ao achar o caixão: http://img511.imageshack.us/my.php?image=coffin1sp0.png O que será que tem dentro? http://img291.imageshack.us/my.php?image=coffin2zs4.png Abrindo: http://img511.imageshack.us/my.php?image=coffin3ok2.png Vou tentar denovo... http://img291.imageshack.us/my.php?image=coffin4lt6.png Bom...é isso aí Baseada em uma action de The Killer: http://forums.otserv.com.br/showthread.php?t=661 Modificada by: Shibew Aproveitem (Y)
  14. [8.10+][Do concurso] Adv. Teleport Quest

    Teleport Quest Um teleport diferente. Requisitos: Você coloca uma wooden stake em cada coal basin e da use numa alavanca então alguns efeitos aparecerão e você será teleportado perto de um baú que quando aberto te da uma blessed wooden stake e você é teleportado para uma posição definida depois de 5 segundos. Crie um arquivo na pasta "data/actions/scripts" com o nome de "teleport_quest.lua" contendo o script abaixo: local coalpos1 = {x=500, y=442, z=6, stackpos=1} local coalpos2 = {x=502, y=442, z=6, stackpos=1} local otherpos = {x=501, y=501, z=7} local newpos = {x=504, y=440, z=6} function doDelayTeleport(cid, pos, delay, effect) if pos ~= nil then local function teleport(p) doTeleportThing(cid, pos, FALSE) if effect ~= nil then doSendMagicEffect(pos, effect) else doSendMagicEffect(pos, 10) end end if delay ~= nil then addEvent(teleport, delay, p) else addEvent(teleport, 0, p) end return LUA_NO_ERROR else print("Error: doDelayTeleport.") return LUA_ERROR end end function doDelayShoot(frompos, topos, effect, delay) if frompos ~= nil and topos ~= nil and effect ~= nil then local function shoot(p) doSendDistanceShoot(frompos, topos, effect) end if delay ~= nil then addEvent(shoot, delay, p) else addEvent(shoot, 0, p) end return LUA_NO_ERROR else print("Error: doDelayShoot.") return LUA_ERROR end end function onUse(cid, item, frompos, itemEx, topos) playerpos = getCreaturePosition(cid) coal1 = getThingfromPos(coalpos1) coal2 = getThingfromPos(coalpos2) if item.itemid == 1945 then if getPlayerStorageValue(cid, 6000) == -1 then if coal1.itemid == 5941 and coal2.itemid == 5941 then doRemoveItem(coal1.uid, 1) doRemoveItem(coal2.uid, 1) doSendMagicEffect(coalpos1, 10) doSendMagicEffect(coalpos2, 10) doTransformItem(item.uid, item.itemid + 1) for i = 1, 20 do doDelayShoot(coalpos1, newpos, 37, i * 100) doDelayShoot(coalpos2, newpos, 37, i * 100) end doDelayTeleport(cid, newpos, 2000, 39) doSendMagicEffect(playerpos, 2) doSendAnimatedText(playerpos, "Teleport!", TEXTCOLOR_YELLOW) else doSendMagicEffect(topos, 2) doPlayerSendCancel(cid, "Coloque um wooden stake sobre cada coal basin.") end else doPlayerSendCancel(cid, "Você já fez essa quest.") doSendMagicEffect(playerpos, 2) end elseif item.itemid == 1946 then if math.random(1, 5) >= 4 then doTransformItem(item.uid, item.itemid - 1) doSendMagicEffect(topos, 12) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A alavanca voltou ao seu estado normal.") else doSendMagicEffect(topos, 2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A alavanca está emperrada, tente puxá-la novamente.") end elseif item.itemid == 1746 then if getPlayerStorageValue(cid, 6000) == -1 then doDelayTeleport(cid, otherpos, 5000, 12) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Teleportando em 5 segundos...") doPlayerAddItem(cid, 5942, 1) setPlayerStorageValue(cid, 6000, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já pegou um blessed wooden stake.") doDelayTeleport(cid, otherpos, 5000, 12) end end return TRUE end Adicione esta tag no "actions.xml" que se encontra na pasta "data/actions": <action actionid="6000" script="teleport_quest.lua"/> No seu MapEditor coloque actionID 6000 na alavanca e actionID 6000 no baú de ID 1746 que virá a recompensa, mas coloque alguma uniqueID nesse mesmo baú para ninguém sair com ele As configurações necessárias são mudar as posições contidas em: local coalpos1 = {x=500, y=442, z=6, stackpos=1} -- Posição do 1º coal basin. local coalpos2 = {x=502, y=442, z=6, stackpos=1} -- Posição do 2º coal basin. local otherpos = {x=501, y=501, z=7} -- Posição para onde o jogador será teleportado ao dar use no baú. local newpos = {x=504, y=440, z=6} -- Posição para onde o jogador será teleportado ao dar use na alavanca se tiver os determinados itens. É importante que a newpos esteja perto da coalpos1 e coalpos2 para que os efeitos se tornem mais bonitos. O andar de newpos, coalpos1 e coalpos2 tem que ser o mesmo, pois não é possível enviar projétils para andares diferentes. Postem, tirem dúvidas, dêem sugestões para novos script, doem OT$, enfim, façam algo que eu possa saber que você leu meu tópico.
  15. [N:Médio] Usando o "For"

    Usando "For" Eu já vi muito tipo de aula: aula sobre If, While, Repeat e tantas outras que me ajudaram bastante, então um dia desses eu tava conversando com o Fadi e ele me ensinou a usar essa função, então hoje venho ensinar a vocês, por isso créditos a ele(Fadi, e eu Nord por fazer o tutorial/aula). O que o for faz? Ele repete um determinado número de vezes a cada um milésimo de segundo algo, mas trocando um valor que é uma espécie de variável. Tá, mas você não entendeu nada então vamos a prática. Quando usarmos o for será assim: Ok, até agora podemos entender que começaremos com for e depois colocaremos qualquer letra, no caso eu usei i e depois = um número, outro número (de preferência maior) e para finalizar o do. O que acontecerá, ele vai repetir o i, então na primeira vez ele vai ser 1, depois ele vai repetir de novo, dai vai ser 2, então repetira outra vez, e vai ser 3. E talvez você diga: "Mas eu não to vendo utilidade nenhuma." Então você vai ver, olhe abaixo e depois eu explico: [b]for[/b] [color=blue]i[/color] = [i]1[/i],[u]3[/u] [color=Red]do[/color] doSendMagicEffect(qualquer_posição, [color=blue]i[/color]) [color=navy]end[/color] Agora explicação: Acontecerá um efeito na "qualquer_posição", como for começa com 1 ele enviara o efeito de número 1, depois ele vai repetir e vai enviar outro efeito, mas dessa vez vai ser o 2, e depois novamente enviará um efeito, mas um efeito de número 3. Acredito que vocês entenderam, mas lembrando de nunca se esquecer do end para terminar o for. Ou seja, o for i será um valor, eu posso fazer então o player falar 1, depois 2, depois 3, se eu fizer for i = 1,6 do e dentro da função doPlayerSay(cid,"'..i..'",1) olhe o que vai acontecer: Nord says: 1 <Se passa um milésimo...> Nord says: 2 <Outro milésimo depois...> Nord says: 3 E isso acontecerá até chegar ao 6. Conforme sua criatividade, inteligência e esforço você conseguirá fazer scripts para annihilator, arenas e muito mais(inclusive funções). Lembre-se, entre uma ação e outra dentro do for terá um espaço de 1 milésimo de segundo, isso você não pode alterar a não ser que use um addEvent, mas isso é outro tutorial. Até agora vocês aprenderam a usar o for, mas há mais alguma coisa faltando sobre isso, e é o break. O break serve para parar um loop(coisas como for, while e repeat) Então abaixo um exemplo nada prático mas útil para aprender como usar o break: for [color=orange]i[/color] = 1, 100 do doPlayerSendTextMessage(cid, 22, "[color=Orange]"..i.."[/color]") if i == 50 then [color=Blue]break[/color] end end Tutorial/Aula fica por aqui, espero ter ajudado e gostaria que me fizessem doações de OT$ ou então pelo menos postem uma crítica, sugestão ou o que achou do tópico. (Mas com respeito) Aula eu acho que é coisa de moderador fazer, mas não há mal algum em aprender com um usuário não?! -------------------------------------------- Script de Exemplo -------------------------------------------- Créditos: Feito por Fadi e postado por Haxy function onUse(cid, item, frompos, item2, topos) local conf = {bagId = 1987, storage = 15975} local itens = {"2120", "2554"} -- Script: if getPlayerStorageValue(cid,conf.storage) ~= 9 then -- Verifica se o player ja fez a quest, se não tiver feito: local bagUid = doPlayerAddItem(cid,conf.bagId,1) -- Adiciona bag ao player setPlayerStorageValue(cid,conf.storage,9) for i = 1,#itens do doAddContainerItem(bagUid, itens[i], 1) end else -- Caso já tenha feito a quest doPlayerSendTextMessage(cid,22,'It\'s empty.') -- Manda mensagem falando que esta vazio end return 1 end
  16. [n:facil]papai Noel Editado!!!

    -------------------------------------------------- Nome: Papai Noel Versão: 8.1 Tipo do script: Action Servidor Testado: Devland premiun Autor: Alisson ------------------------------------------------- Eae galera!! estou aki para postar meu aprimoramento =] sempre tem akele q pergunta: oq vc fez??? eu modifiquei a aparencia dele e algumas coisas q ele da pq ele tava como morgaroth =/ bem, vamo para di inrrolar va em data/npc copie qualquer um, cole com o nome Papai Noel apague tudu di la dentro e cole isto abra a pasta "scripts" copie qualquer um e coloke o nome de "noel" (sem as aspas) pra quem usa map editor, coloka issu no arquivo "creatures": espero ter ajudado =] por favor postem criticas e elogios =] creditos: 50% xxdkdosalamexx por ter criado o script 50% eu por modificar alguns presentes,mudar skin, todas as falas,looktipe map editor e alguns outros x) agora eu colokei o tutorial na seção correta =]
  17. [8.1]Mother's Day

    Bem, hoje como é dia das mães, fiz um script para comemorar está data. O script é uma caixinha que ao dar use nela, você irá instala, que após um tempo soltará fogos de artificios, e criará (ou não) alguns itens, e poderá transformar as pessoas em alguns itens. Bem vamos ao script. Abra a pasta do seu OT e vá até a pasta data/actions/scripts, copie um arquivo lua de lá e renomei para DDM, apague tudo que está la dentro e coloque isso: ----===---=== Script by Dark ===---===--- ----===---=== OTNET ===---===--- --- CONFIGURAÇÕES --- local CONFIG = { contagem = 1, money = 100, tempo = {instal = 15, inicio = 7, fogos = 600, trans = 1200}, fogos = {numero = 15, distance = 3, efeito = 15}, area = 3, transforma = {numero = 10, createitem = 1, timeout = 60, efeito = 35, distance = 30}, item = {7697, 7733, 7692, 2112, 1685, 7966, 7694, 1687}, text = "Happy\nMother's day" } -------------------------------------- local cid = 0 function onUse(cid, item, frompos, item2, topos) if topos.x ~= 0 and topos.y ~= 0 and topos.z ~= 0 then if doPlayerRemoveMoney(cid,CONFIG.money) == TRUE then doPlayerSendTextMessage(cid, 21, 'Instalando. Este procedimento demorara ' ..CONFIG.tempo.instal.. ' segundos. Aguarde') doSendMagicEffect(topos,2) mayNotMove(cid, 1) cid = cid addEvent(Instal, CONFIG.tempo.instal*1000, {cid = cid, topos = topos}) else doPlayerSendCancel(cid, 'Voce precisa de '..CONFIG.money..' para ativar isto') end else hit = math.random(10,50) doCreatureAddHealth(cid,-hit) doSendAnimatedText(getPlayerPosition(cid), hit, 180) doSendMagicEffect(getPlayerPosition(cid), 5) end doRemoveItem(item.uid,1) return TRUE end function Instal(i) topos = i.topos cid = i.cid doPlayerSendTextMessage(cid, 21, 'Instalação completa.') doSendMagicEffect(topos,2) mayNotMove(cid, 0) addEvent(Time, 1000, {topos = topos}) end local TEMPO = CONFIG.tempo.inicio function Time(t) topos = t.topos if TEMPO ~= 0 then if TEMPO >= 8 then color = 5 elseif TEMPO >= 4 then color = 198 else color = 180 end if CONFIG.contagem == 1 then anitext = TEMPO else if anitext == "tic" then anitext = "tac" color = 129 else anitext = "tic" color = 129 end end doSendAnimatedText(topos, anitext, color) doSendMagicEffect(topos,3) TEMPO = TEMPO-1 addEvent(Time, 1000, {topos = topos}) else TEMPO = CONFIG.tempo.inicio addEvent(Effects, 100, {topos = topos}) end end local Fogos = CONFIG.fogos.numero function Effects(e) topos = e.topos if Fogos > 3 then ax = math.random(-CONFIG.area, CONFIG.area) ay = math.random(-CONFIG.area, CONFIG.area) position = {x=topos.x+(ax), y=topos.y+(ay), z=topos.z} doSendDistanceShoot(topos, position, CONFIG.fogos.distance) doSendMagicEffect(topos,CONFIG.fogos.efeito) doSendAnimatedText(topos, "*", math.random(100,300)) doSendMagicEffect(position,math.random(28,30)) Fogos = Fogos-1 addEvent(Effects, CONFIG.tempo.fogos, {topos = topos}) elseif Fogos > 0 then for _= 1, CONFIG.fogos.numero do ax = math.random(-CONFIG.area, CONFIG.area) ay = math.random(-CONFIG.area, CONFIG.area) position = {x=topos.x+(ax), y=topos.y+(ay), z=topos.z-1} doSendMagicEffect(position,math.random(28,30)) doSendAnimatedText(position, "Bumm", math.random(100,300)) end Fogos = Fogos-1 addEvent(Effects, CONFIG.tempo.fogos, {topos = topos}) else addEvent(Trans, 1500, {topos = topos}) Fogos = CONFIG.fogos.numero end end local Tran = CONFIG.transforma.numero function Trans(t) topos = t.topos if Tran ~= 0 then ax = math.random(-CONFIG.area, CONFIG.area) ay = math.random(-CONFIG.area, CONFIG.area) posi = {x=topos.x+(ax), y=topos.y+(ay), z=topos.z, stackpos = 253} position = getThingfromPos(posi) if position.uid ~= 0 and isPlayer(position.uid) == TRUE then doSetItemOutfit(position.uid, CONFIG.item[math.random(1, #CONFIG.item)], (CONFIG.transforma.timeout*1000)) else if math.random(1,10) == 1 and position.itemid == 0 and CONFIG.transforma.createitem == 1 then doCreateItem(CONFIG.item[math.random(1, #CONFIG.item)],1,posi) end end doSendMagicEffect(topos, math.random(12,14)) doSendMagicEffect(posi, CONFIG.transforma.efeito) doSendDistanceShoot(topos, posi, CONFIG.transforma.distance) doSendAnimatedText(posi, "Bzzz", math.random(100,300)) Tran = Tran-1 addEvent(Trans, CONFIG.tempo.trans, {topos = topos}) else Tran = CONFIG.transforma.numero doSendMagicEffect(topos, 2) cartao = doCreateItem(6538,1,topos) text = CONFIG.text .. '\n\nBy: ' ..getPlayerName(cid) doSetItemText(cartao, text) end end Agora vá até data/actions/ e abra o arquivo actions.xml e dicione isso: <action itemid="7961" script="DDM.lua"/> Pronto, o item do pacote é 7961 . Configurando Para configurar o speed basta mudar nessa parte do script: local CONFIG = { contagem = 1, money = 100, tempo = {instal = 15, inicio = 7, fogos = 600, trans = 1200}, fogos = {numero = 15, distance = 3, efeito = 15}, area = 3, transforma = {numero = 10, createitem = 1, timeout = 60, efeito = 35, distance = 30}, item = {7697, 7733, 7692, 2112, 1685, 7966, 7694, 1687}, text = "Happy\nMother's day" } [/left] [/center] [/center] [/left] [/center] -- Contagem: Coloque 1 para que mostre uma contagem regressiva ou 0 para que não msotre -- Money: Preço que deverá ser pago para ativar a caixa -- Tempo: --------- Instal : Tempo (em segundos) que levará para instalar a caixa --------- Inicio : Tempo (em segundos) que levará para começar as ações do pacote --------- fogos : Intervalo (em milisegundos) que levará entra um fogos e outro --------- trans : Intervalo (em milisegundos) que levará entra uma transformação e outra -- Fogos: --------- numero : Numeros de fogos de artificio que será solto --------- distance : efeito de distanca --------- efeito : Numeros de efeito magico -- Area: alcance (em SQMs) maximo que a ação chegará -- Transforma: --------- numero : Numeros de efeitos --------- createitem : Coloque 1 para que seja criado itens, e 0 para que não seja criado --------- timeout : Tempo (em segundos) que o player ficará com o Outfit --------- distance : efeito de distanca --------- efeito : Numeros de efeito magico -- Item: IDs dos itens que poderão ser criados, e que os players poderão ser transformados -- Text: Texto que virá escrito no cartão (lembre-se de colocar entre aspas (")) Bem, lembrando que esse script só funcionará provavelmente apenas em TFS, é isso, espero que tenham gostado e até a próxima
×