Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 11/23/15 em todas áreas

  1. Administrador

    (AoM) Adivinhe o Mapa #01

    O Gwix tinha acertado, mas ele deu duas sugestões e a primeira estava incorreta. Parabéns @, você venceu na 3ª dica! • • MEMBRO VENCEDOR: @ RESPOSTA CORRETA: Restaurante Acerto DICA 3 10 Pontos de Reputação + Quem quiser ver quais seriam as próximas dicas, está abaixo: DICA 4 DICA 5
    2 pontos
  2. Krono

    [Creatureevent Mod] Militar Rank mod

    Sistema que adiciona um Rank Militar de acordo com os Frags do jogador. Ou seja, quanto mais o player mata, maior será o seu rank. Achei muito legal, pois dá um ar de disputa por patentes dentro do servidor. Para instalar crie um arquivo dentro da pasta mods do seu servidor como o nome militarrank.xml e cole este script dentro. <?xml version = "1.0" encoding = "UTF-8"?> <mod name = "Military Ranks" version = "1.0" author = "Teckman" enabled = "yes"> <config name = "ranks"><![CDATA[ titles = { [1] = "Private First Class", [3] = "Specialista", [5] = "Corporal", [10] = "Sargento", [12] = "Staff Sargento", [15] = "Sargento Primeiro", [20] = "Master Sargento", [22] = "Primeriro Sargento", [25] = "Sargent Major", [30] = "Sargento Major Comando", [35] = "Sargento Major Exercito", [38] = "Segundo Tenente", [40] = "Primeiro Tenente", [45] = "Capitão", [48] = "Major", [50] = "Tenente Coronel", [55] = "Coronel", [100] = "General de Brigada", [110] = "General de Divisão", [120] = "Tenente General", [140] = "General", [170] = "General de Exercito" } fragsStorage = 600 ]]></config> <event type = "look" name = "ranksLook" event = "script"><![CDATA[ domodlib("ranks") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then local rank = {rank = "Private", frags = 0} for k, v in pairs(titles) do if(math.max(0, getPlayerStorageValue(thing.uid, fragsStorage)) > k - 1) then if(k - 1 > rank.frags) then rank.rank, rank.frags = v, k - 1 end end end doPlayerSetSpecialDescription(thing.uid, "\n Military rank: " .. rank.rank) end return true end ]]></event> <event type = "kill" name = "ranksKill" event = "script"><![CDATA[ domodlib("ranks") function onKill(cid, target) if(isPlayer(target)) then setPlayerStorageValue(cid, fragsStorage, math.max(0, getPlayerStorageValue(cid, fragsStorage) + 1)) if(titles[getPlayerStorageValue(cid, fragsStorage)]) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You advanced to military rank: " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. ". Congratulations " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. "!") end end return true end ]]></event> <event type = "login" name = "ranksLogin" event = "script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "ranksKill") registerCreatureEvent(cid, "ranksLook") return true end ]]></event> </mod> Gostou? Espero que sim!. credito: Roque
    1 ponto
  3. Marco Oliveira

    Oramond Completa

    Informações do Mapa: Compatível com o items.otb oficial As casas não são adicionadas
    1 ponto
  4. Administrador

    Magnus Challenger

    Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda! Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores. Quem quiser pode ver um vídeo comentado de como o sistema funciona: Dito isso vou ensinar vocês como instalar isso no server: Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo -------------- TASK SYSTEM -------------- registerCreatureEvent(cid,"tasksystem") if getPlayerStorageValue(cid, 95673) < 0 then setPlayerStorageValue(cid, 95673, 0) end if getPlayerStorageValue(cid, 95674) < 0 then setPlayerStorageValue(cid, 95674, 0) end ----------------------------------- Ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão) <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele: local storages = { name = 95672, count = 95673, maxcount = 95674, } local config = { partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce killdistance = 7 --- distancia que conta os kills } function onKill(cid, target, lastHit) if isMonster(target) and getPlayerStorageValue(cid, storages.maxcount) > 3 and getCreatureMaster(target) == target and (not(isInParty(cid)) or config.partycount ~= true) then if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(cid, storages.name)) then setPlayerStorageValue(cid, storages.count, getPlayerStorageValue(cid, storages.count) + 1) if getPlayerStorageValue(cid, storages.count) == getPlayerStorageValue(cid, storages.maxcount) then doPlayerSendTextMessage(cid, 19, "You finished your task.") elseif getPlayerStorageValue(cid, storages.count) < getPlayerStorageValue(cid, storages.maxcount) then doPlayerSendTextMessage(cid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(cid, storages.count) .."/".. getPlayerStorageValue(cid, storages.maxcount) .."].") end end elseif isMonster(target) and getCreatureMaster(target) == target and isInParty(cid) and config.partycount == true then leader = getPartyLeader(cid) party = getPartyMembers(leader) for i = 1, #party do pid = party[i] if getDistanceBetween(getThingPos(target), getThingPos(pid)) < config.killdistance then if getPlayerStorageValue(pid, storages.maxcount) > 3 then if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(pid, storages.name)) then setPlayerStorageValue(pid, storages.count, getPlayerStorageValue(pid, storages.count) + 1) if getPlayerStorageValue(pid, storages.count) == getPlayerStorageValue(pid, storages.maxcount) then doPlayerSendTextMessage(pid, 19, "You finished your task.") elseif getPlayerStorageValue(pid, storages.count) < getPlayerStorageValue(pid, storages.maxcount) then doPlayerSendTextMessage(pid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(pid, storages.count) .."/".. getPlayerStorageValue(pid, storages.maxcount) .."].") end end end end end end return true end Terminada a parte da contagem de kill vamos ao NPC em si. Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele: <npc name="Magnus" script="data/npc/scripts/zezeniaa.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="134" head="39" body="113" legs="38" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been wondering if you would never appear.. Are you interested in a {challenge} or you're just looking for your {reward}?" /> </parameters> </npc> Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -------------------------------- ALL CONFIG CAN BE DONE HERE -------------------------- local short = 100 + (math.random(0,6) * 50) -- quantidade de monstros no curto local median = 500 + (math.random(0,6) * 50) -- quantidade de monstros no mediano local long = 1000 + (math.random(0,10) * 100) -- quantidade de monstros no longo local config = { levelcollect = 30, --- level pra poder fazer tasks do tipo collect time = 8 * 60 * 60, --- tempo que vc vai ficar sem poder falar com ele caso abandone uma task (em segundos) bonus = 1.2, --- bonus de exp/gold caso a task escolhida seja random multiplicator = 1 --- multiplicador de exp/gold (coloque de acordo com a necessidade do seu server) } local easy = { [1] = "Goblin", [2] = "Troll", [3] = "Rotworm", [4] = "Dwarf", [5] = "Amazon", [6] = "Elf", [7] = "Wolf", [8] = "Orc", [9] = "Minotaur" } local eacollect = { [1] = {id = 5880, count = 20}, -- iron ore [2] = {id = 5902, count = 15}, -- honeycomb [3] = {id = 5878, count = 10}, -- minotaur leather [4] = {id = 5890, count = 20}, -- chicken feather [5] = {id = 5894, count = 15}, -- bat wing [6] = {id = 5896, count = 10}, -- bear pawn [7] = {id = 5897, count = 20}, -- wolf pawn [8] = {id = 5921, count = 15}, -- heaven blossom [9] = {id = 3956, count = 10} -- elephant tusk } local medium = { [1] = "Cyclops", [2] = "Ghoul", [3] = "Dragon", [4] = "Mammoth", [5] = "Vampire", [6] = "Fire Devil", [7] = "Fire Elemental", [8] = "Valkyrie", [9] = "Monk" } local medcollect = { [1] = {id = 5876, count = 35}, -- lizard leather [2] = {id = 5678, count = 30}, -- tortoise egg [3] = {id = 5898, count = 25}, -- beholder eye [4] = {id = 5899, count = 35}, -- turtle shell [5] = {id = 2229, count = 30}, -- skull [6] = {id = 5877, count = 25}, -- dragon leather [7] = {id = 5920, count = 30} -- dragon scale } local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate" } local hardcollect = { [1] = {id = 5882, count = 50}, -- red dragon scale [2] = {id = 5948, count = 45}, -- red dragon leather [3] = {id = 5930, count = 40}, -- behemoth claw [4] = {id = 5879, count = 50}, -- giant spider silk [5] = {id = 5954, count = 45}, -- demon horn [6] = {id = 6500, count = 40}, -- demoniac essence [7] = {id = 5944, count = 45}, -- soul orb } local storages = { name = 95672, count = 95673, maxcount = 95674, difficult = 95675, length = 95676, delay = 95677, type = 95678, } local gold = 1000 * ((getPlayerStorageValue(cid, storages.length)) + (getPlayerStorageValue(cid, storages.difficult))) * config.multiplicator local experience = ((getExperienceForLevel(getPlayerLevel(cid) + 1) - getExperienceForLevel(getPlayerLevel(cid))) / 100) * ((getPlayerStorageValue(cid, storages.length)) * (getPlayerStorageValue(cid, storages.difficult))) * config.multiplicator -------------------------------- END OF ALL CONFIG -------------------------- local type = getPlayerStorageValue(cid, storages.type) if (msgcontains(msg, 'task') or msgcontains(msg, 'challenge')) and (getPlayerStorageValue(cid, storages.delay) - os.time()) <= 0 then if getPlayerStorageValue(cid, storages.maxcount) > 3 and getPlayerStorageValue(cid, storages.type) == 1 then talkState[talkUser] = 6 selfSay('Your task is to kill {'..getPlayerStorageValue(cid, storages.maxcount)..' '..getPlayerStorageValue(cid, storages.name)..'s}. Hurry with this or you want to {give up}?!', cid) elseif getPlayerStorageValue(cid, storages.maxcount) > 3 and getPlayerStorageValue(cid, storages.type) == 2 then talkState[talkUser] = 6 selfSay('Your task is to collect {'.. getPlayerStorageValue(cid, storages.maxcount)..' '.. getItemNameById(getPlayerStorageValue(cid, storages.name)) ..'s}. Hurry with this or you want to {give up}?!', cid) else talkState[talkUser] = 1 selfSay('I have two types of tasks, you want to {kill} monsters or to {collect} some items for me? You can also let me choose a {random} one for you, garanting a final bonus in your reward.', cid) end elseif (msgcontains(msg, 'kill') and talkState[talkUser] == 1) then talkState[talkUser] = 2 setPlayerStorageValue(cid, storages.type, 1) selfSay('I have all kinds of tasks, you want a {easy}, {medium} or are you up to a {hard} one?', cid) elseif (msgcontains(msg, 'collect') and talkState[talkUser] == 1 and getPlayerLevel(cid) >= config.levelcollect) then talkState[talkUser] = 2 setPlayerStorageValue(cid, storages.type, 2) selfSay('I have all kinds of tasks, you want a {easy}, {medium} or are you up to a {hard} one?', cid) elseif (msgcontains(msg, 'collect') and talkState[talkUser] == 1 and getPlayerLevel(cid) < config.levelcollect) then talkState[talkUser] = 1 selfSay('You can only do collect tasks once you reach level '..config.levelcollect..'.', cid) ------- difficult --------- elseif (msgcontains(msg, 'random') and talkState[talkUser] == 1) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.type, math.random(1,2)) setPlayerStorageValue(cid, storages.difficult, math.random(2,4) * config.bonus) setPlayerStorageValue(cid, storages.length, math.random(2,4) * config.bonus) elseif (msgcontains(msg, 'hard') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 4) elseif (msgcontains(msg, 'medium') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 3) elseif (msgcontains(msg, 'easy') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 2) ------- bye --------- elseif (msgcontains(msg, 'no')) and isInArray({1, 6, 7}, talkState[talkUser]) then talkState[talkUser] = 0 selfSay('Clearly you are not ready. We can talk later...', cid) ------- length --------- elseif (msgcontains(msg, 'short') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 2) elseif (msgcontains(msg, 'median') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 3) elseif (msgcontains(msg, 'long') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 4) ----------- give up option ----------- elseif (msgcontains(msg, 'give up') and talkState[talkUser] == 6) then selfSay('Are you saying that you want to give up this task? I will not give you any other task in the next '.. (config.time/3600) ..' hour(s).', cid) talkState[talkUser] = 7 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 7) then selfSay('Since you will not help me, get out of here.', cid) setPlayerStorageValue(cid, storages.maxcount, 0) setPlayerStorageValue(cid, storages.delay, os.time() + config.time) talkState[talkUser] = 0 ----------------------- ------- checking --------- elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 4) then local length = getPlayerStorageValue(cid, storages.length) local difficult = getPlayerStorageValue(cid, storages.difficult) if type == 1 then if length == 2 then setPlayerStorageValue(cid, storages.maxcount, short) elseif length == 3 then setPlayerStorageValue(cid, storages.maxcount, median) else setPlayerStorageValue(cid, storages.maxcount, long) end if difficult == 2 then setPlayerStorageValue(cid, storages.name, easy[math.random(1, #easy)]) elseif difficult == 3 then setPlayerStorageValue(cid, storages.name, medium[math.random(1, #medium)]) else setPlayerStorageValue(cid, storages.name, hard[math.random(1, #hard)]) end setPlayerStorageValue(cid, storages.count, 0) talkState[talkUser] = 0 selfSay('OK then.. your task is to kill '..getPlayerStorageValue(cid, storages.maxcount)..' '..getPlayerStorageValue(cid, storages.name)..'s. Do not spare any monster!', cid) elseif type == 2 then if length == 2 then setPlayerStorageValue(cid, storages.maxcount, eacollect[math.random(1, #eacollect)].count) elseif length == 3 then setPlayerStorageValue(cid, storages.maxcount, medcollect[math.random(1, #medcollect)].count) else setPlayerStorageValue(cid, storages.maxcount, hardcollect[math.random(1, #hardcollect)].count) end if difficult == 2 then setPlayerStorageValue(cid, storages.name, eacollect[math.random(1, #eacollect)].id) elseif difficult == 3 then setPlayerStorageValue(cid, storages.name, medcollect[math.random(1, #medcollect)].id) else setPlayerStorageValue(cid, storages.name, hardcollect[math.random(1, #hardcollect)].id) end setPlayerStorageValue(cid, storages.count, 0) talkState[talkUser] = 0 selfSay('OK then.. your task is to collect {'.. getPlayerStorageValue(cid, storages.maxcount)..' '.. getItemNameById(getPlayerStorageValue(cid, storages.name)) ..'s}. Bring me the proof that you made it!', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 4) then talkState[talkUser] = 0 selfSay('Ok, come back when you have the guts.', cid) ------- reward --------- elseif msgcontains(msg, 'reward') then if type == 1 then if getPlayerStorageValue(cid, storages.count) >= getPlayerStorageValue(cid, storages.maxcount) and getPlayerStorageValue(cid, storages.maxcount) > 3 then selfSay('You finished the quest, now you want to receive your reward in {gold} or in {experience}?', cid) talkState[talkUser] = 5 else selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end end if type == 2 then if getPlayerItemCount(cid, getPlayerStorageValue(cid, storages.name)) >= getPlayerStorageValue(cid, storages.maxcount) and getPlayerStorageValue(cid, storages.maxcount) > 3 then selfSay('You finished the quest, now you want to receive your reward in {gold} or in {experience}?', cid) talkState[talkUser] = 5 else selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end elseif (type < 1) then selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end ---------- checking rewards --------------- elseif (msgcontains(msg, 'gold') and talkState[talkUser] == 5 ) then if (type == 1) or (doPlayerRemoveItem(cid, getPlayerStorageValue(cid, storages.name), getPlayerStorageValue(cid, storages.maxcount)) and type == 2) then for k, v in pairs(storages) do setPlayerStorageValue(cid, v, 0) end doPlayerAddMoney(cid, gold) talkState[talkUser] = 0 selfSay('Thanks for your help, here is your prize..', cid) else selfSay('Something went wrong..', cid) end elseif (msgcontains(msg, 'experience') and talkState[talkUser] == 5) then if (type == 1) or (doPlayerRemoveItem(cid, getPlayerStorageValue(cid, storages.name), getPlayerStorageValue(cid, storages.maxcount)) and type == 2) then for k, v in pairs(storages) do setPlayerStorageValue(cid, v, 0) end doPlayerAddExperience(cid, experience) talkState[talkUser] = 0 selfSay('Thanks for your help, here is your prize..', cid) else selfSay('Something went wrong..', cid) end ----------------------- msg when blockek -------------- elseif (msgcontains(msg, 'task') or msgcontains(msg, 'challenge')) and (getPlayerStorageValue(cid, storages.delay) - os.time()) > 0 then talkState[talkUser] = 0 selfSay('I can not trust you since you failed in the last job. You will have to wait until I feel that I can trust you again..', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) FEITO ISSO ESTÁ TERMINADO Agora aprendendo a configurar: No tasksystem vc pode editar isso daqui: Citar Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server. Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill. No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce killdistance = 7 --- distancia que conta os kills Citar Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores. Citar levelcollect é o level mínimo pra fazer tasks do tipo collect. time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas) bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2) multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador. Citar local short = 100 + (math.random(0,6) * 50) -- quantidade de monstros no curto local median = 500 + (math.random(0,6) * 50) -- quantidade de monstros no mediano local long = 1000 + (math.random(0,10) * 100) -- quantidade de monstros no longo Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula! Ex: adicionando Morgaroth na tabela de hard local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10]. O restante das tabelas são separadas para o banco de dados das tasks de collect: Citar segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count; Ex: [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos. No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50. PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor. Créditos: xWhiteWolf
    1 ponto
  5. Olá Galerinha do xtibia, Tudo Bem ??? Antes de mais nada peço que movam para a área de Tutoriais de Website pois quando fui tentar criar um novo tópico la não estava dando tentei em Envie Seu Tutorial e nada. Vamos ao que interessa, estou fazendo esse tutorial ensinando a colocar o SHOP em seu Modern AAC pois vejo que muitos tem dúvida nesse assunto e eu quero que essas dúvidas acabem Quando acabarem de ler o Tópico veras que não é uma coisa dificil. Então vamos la para que funcione corretamente faça como eu peço no Tópico. Primeiramente vamos colocar para que o Shop entregue os items ao comprar certo ?!?! É Bem facil vá na pasta data/globalevents/script e crie um arquivo chamado shop.lua e coloco o seguinte script abaixo dentro e salve. Agora vá em globalevents.xml e coloque a seguinte tag <globalevent name="Shop" interval="3000" event="script" value="shop.lua"/> Pronto a parte do shop entregar os items após a compra está feito agora vamos instalar o SHOP. Peço que baixem o seguinte arquivo abaixo. http://www.4shared.com/rar/LLcxJq-dba/shop.html? Após baixarem, extraem em seu dekstop será extraida uma pasta chamada shop, renomeem ela para gifts e a coloque dentro da pasta do seu site(htdocs), após fazerem isso vá na pasta system/pages e crie um arquivo chamado gifts.php e coloque o codigo abaixo dentro e salve. Após fazerem isso va no phpmyadmin entre em sua DB e execulte o shop.sql que se encontra dentro da pasta SeuSite/gifts/config e pronto agora só entrar no link e terá la as instruções para finalizar a instalação. http://linkdoseusite/index.php/p/v/gifts.php Pronto SHOP instalado agora vamos colocar a aba de SHOP em seu site caso não tenha ou esteja com outro url. Vá na pasta seusite/templates/seutemplate e abra o index.php e coloque o seguinte url na parte onde tem as urls das paginas <li><a href="{$path}/index.php/p/v/gifts">SHOP</a></li> E pronto salve e entre em seu site e veja a magica Em Breve estarei fazendo um tópico ensinando a colocar o sistema de pagseguro automatico ou seja a pagina de DONATE do Server. Obrigado pela atenção de todos e até a próxima Creditos: Pelo Tutorial Junior Silva
    1 ponto
  6. thiago2300

    [8.6] Subwat Editado Por Min

    O que mudou Foi Reformado 100% a City adicionados novos item pet system nova vocaçao,quando o player chega ao level 550k ele digita !supreme e vira nova hero com essas vocaçao tem novas magia como nova vita,nova mana,nova ice...etc Novos item Foi adicionados novos item God helmet:protecion 20% all damage God armor:protecion 10% all damage God armor:protecion 20% all damage God shield:protecion 10% all damage God Boots Reflete 100% all damages God sword attack 380,holy 130.ela explode em 4 lados God wand hit min:100000,max:200000 God bow attack 180,range 15. God arrow attack 220,+ 90 distance. Uma ss templo http://imageshack.us...97/templo2.png/ download http://www.4shared.c...SUBWAT_V17.html OBS: So consigui postar esas imagens descupem se vcs gostaram dao hep por favor,o scan tbm podem fazer para min obrigado creditos subwat 50% Math 20% eu 30%
    1 ponto
  7. aremst

    [Sprites] [+226,859] De Tibia 10.82

    Este é um pacote de sprites em formato PNG com fundo transparente do Tibia versão 10,82 ... Na próxima versão da tíbia vou acrescentar mais pacotes extras para download neste post Download Link: Scan: -------------------------------------------------------- Pacote adicional de ultima preactualización 26/11/2015 03:40 am Download link:
    1 ponto
  8. Amantezinho

    [Módulo] game_shop OTC

    Eaí galera, estive procurando e nunca achei um tutorial para instalar o Mod de Game Shop ou o Diamond Shop, muito usado nos Poketibias da vida; Afim de ajudar os que também procuram, aqui está o tutorial traduzido do Margoh: Como é que o game_shop funciona: Há apenas uma escolha de item por botão, se você quiser mais, faça você mesmo. A compra funciona por comandos, por exemplo (em shop.lua): Exemplo em addons.otui: Code: Como adicionar um novo botão? Copie e/ou edite todas as funções de exemplo: Troque este nome por ex. buyWizard, ficando: Abaixo da função mude: Para: Abaixo de addons.otui copie e cole o último botão e edit para o novo nome de sua função: Ficando: Siga o tutorial para todos os items do shop. Download: MEGA Créditos: Margoh
    1 ponto
  9. Omega

    [AGS] Guild Task

    Aviso Esse script precisa do Advanced Guild System instalado corretamente para funcionar. Informações Esse sistema de scripts funciona como uma task para toda a guild. Assim, qualquer membro da guilda pode aceitar uma task e cada monstro morto por qualquer membro irá contar para completar a task. Ao terminar a task, um membro deve falar com o NPC, que dará guild points e depositará o dinheiro na conta da guilda. Para melhor usufruto, use em conjunto com o Guild Banker. Códigos data/lib/guildtask_lib.lua data/creaturescripts/scripts/guild_onKill.lua data/npcs/scripts/guild_task_npc.lua data/lib/npc/Arthur.xml Configurações Para acrescentar monstros:Abra o arquivo guildtask_lib.lua e adicione {names = {"nome da task", "nome do monstro(1)", "nome do monstro(2), etc...}, totalKills = numero de monstros para completar a task, money = recompensa(dinheiro), points = recompensa(pontos), minPoints = mínimo de pontos para habilitar a task}, Logo abaixo dos demais monstros. Por exemplo, para acrescentar uma task para matar vários tipos de dragons, ficaria assim (o primeiro nome é o nome do task): -- Monsters monsters = { {names = {"dragon"}, totalKills = 5, money = 5000, points = 3, minPoints = 0}, {names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 1}, {names = {"dragon hunter task", "dragon lord", "dragon", "frost dragon", "undead dragon"}, totalKills = 500, money = 150000, points = 5, minPoints = 10}, }, Para configurar o tempo entre uma task e outra, utilize a variável waitTime (guildtask_lib.lua): -- Other variables waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma } Para que não haja tempo de espera, coloque o valor 0. Esse tempo é em minutos.
    1 ponto
  10. kaleudd

    [PXG]As Novas Remakes.

    Olá Xtibia.com, Estou aqui para-lhes disponibilizar em torno de 120 Sprites BEM desejadas por todos da autoria do Pokexgames,Motivo da liberação? R:Sou uns (Se não o unico) que traz Sprites da Pokexgames,então resolvi traze-las para vocês. Créditos:Kaleudd(Eu): pela descompilação e liberação. Pokexgames:Pela Criação de todas Spr presente dentro desse pacote. Caso postar em algum outro lugar,postar os créditos a min e a pxg,Obg =) O que contém nesse pacote? R:Corpos,Looktypes e alguns Itens do Halloween da pxg. Umas prints de alguns pokemons e corpses. Download + Scan: Gostou Rep+,quem sabe eu traga mais quando sair novas?
    1 ponto
  11. LionM

    Colorações Pokémon

    Ohayo! Estava fazendo umas colorações, por que não tinha nada para fazer, fiz algumas com minha imaginação, já outras baseadas no anime, logo abaixo segue respectivamentes as imaginárias e logo mais as baseadas : Imaginárias: Baseadas:
    1 ponto
  12. JKalin

    editor geral de otserv

    Bom pessoal, primeiramente pedindo desculpas por está postando no local errado (eu acho). Percebi uma forte carência de um software realmente bom e ccompleto para auxiliar os donos de servers e principalmente os iniciantes. Pensando nisso hoje comecei o projeto de um editor realmente completo, a lista de funções estará no final do tópico. Essa vontade de ajudar veio logo depois que abandonei o Windows e passei a usar Linux ubuntu, fui muito bem recebido pela comunidade linux que me ajudou bastante no começo quando ainda não conhecia muito bem o sistema. Como sou programador e entendo de literalmente todas as áreas de um otserver, dês de maps até sprites, comecei a criar essa ferramenta para ajudar vocês. Dentre várias linguagens de programação a que escolhi foi java, ela não seria a melhor opção para alguns métodos que esse programa vai ter, mas é de linguagem universal e vai rodar com um ótimo desempenho em todas as plataformas. O programa irá contar com: Editor de spells para criação e novas spells como também editar as já existentes. Editor de itens. Editor de vocação. Editor para config.lua. Editor para forge system, auxiliando na criação de novas fórmulas. Editor de skins e montarias. IDE para criação de scripts lua. E mais funções, mas essas serão as principais. A princípio o programa não servirá para edições de banco de dados... mas já vai estar com bastante coisa em sua versão alpha 1.0 Lembrando pessoal, spells criadas nele serão instaladas em seu serv automaticamente. A melhor parte é que vocês quase não terão contato com códigos e muito menos precisarão navegar por exemplo na pasta data de seu ot. Escolhi divulgar no xtibia porquê foi o forum que mais me ajudou na época em que eu era dono de otserv. Hoje sou maior de idade, nem jogo mais tibia... pouco tempo livre, isso também implica na criação desse software, pois só terei tempo de trabalhar nele a noite e nos finais de semana. Mas tudo indica e creio eu que em 10 ou 15 dias lanço aqui no fórum a versão 0.1 contendo um editor de spells e do config.lua Agora terminou meu horário de trabalho... mas é isso ai pessoal. A e lembrando o nome do editor será JKalin. Meu nome de tibiano kkkkkkkkk a saudades de quando era de menor e podia jogar horas, do meu ot serv com mais de 150 players.... sabe, aproveitem ao máximo essa fase.
    1 ponto
  13. tomax

    [Encerrado]Sttaf Para Server Global

    A Procura De Uma Equipe Olá meu nome é Alberto Oliveira E estou com um projeto de abrir um servidor global na versão mais atualizada vontade não falta mas preciso ser realista ao por um server global Online irá aparecer bugs precisarei inovar e tudo mais ai começa a vim os problemas sou leigo no assunto programação,Scripting Pra falar a verdade meu negócio é web site e sei algo sobre mapa fiquei um bom tempo longe do Tibia e estou meio desatualizado sobre as novas funções quests e etc... Não estou pedindo ajuda financeira ou algo do tipo procuro pessoas que saibam mecher com scripts e etc... pessoas que realmente gostam que são dedicadas não quero um funcionario nada disso quero pessoas que estajam ali lado a lado comigo bom é isto se houver interesse manda Uma PM Para conversamos mais sobre o projeto
    1 ponto
  14. Akashy

    mega camelopt

    criei uma mega evoluçao deixe comentario é important https://imageshack.us/i/p8YS9yXqg https://imageshack.us/i/p7hn2LyOp
    1 ponto
  15. SamueLGuedes

    (AoM) Adivinhe o Mapa #03

    uma ponte para carroças.
    1 ponto
  16. Administrador

    (AoM) Adivinhe o Mapa #02

    • O que é? Adivinhe o Mapa (AoM) é um evento divertido de mapping onde são dadas imagens evolutivas de um determinado mapa, a pessoa que acertar receberá prêmios. Funcionamento • Cada edição do AoM abriga um tema específico de um mapa, uma primeira imagem é adicionada ao tópico; • Os membros devem tentar adivinhar qual é o tema do Mapa; • As sugestões são, geralmente, palavras como: Depot, Casa, Templo, Cachoeira. Dependendo da edição; • Se forem acumuladas 10 sugestões e ninguém acertar, é postado uma segunda imagem com mais itens no mapa; • Caso acumular mais 10 tentativas na segunda imagem, é adicionado a terceira imagem; • Consequentemente, a quarta imagem e a última, a quinta imagem; • Se ninguém acertar após a quarta dica, é levado em consideração a pessoa que mais chegou perto do acerto; • A premiação muda conforme a quantidade de dicas que foram dadas. Regras Premiação Acerto DICA 1 20 Pontos de Reputação + Acerto DICA 2 15 Pontos de Reputação + Acerto DICA 3 10 Pontos de Reputação + Acerto DICA 4 5 Pontos de Reputação + Acerto DICA 5 3 Pontos de Reputação + • • Tema: Igreja Vencedor: @Wo11ven Acerto DICA 1 20 Pontos de Reputação + • • DICA 2 DICA 3 DICA 4 DICA 5
    1 ponto
  17. Administrador

    (AoM) Adivinhe o Mapa #02

    Eita! Essa foi mais rápida que eu imaginei. • • Tema: Igreja Vencedor: @@Wo11ven Acerto DICA 1 20 Pontos de Reputação + • • DICA 2 DICA 3 DICA 4 DICA 5
    1 ponto
  18. Peterwild

    (AoM) Adivinhe o Mapa #01

    Obrigado gente! (e Gwix, pelo descuido Muahaha) Parabéns também @@Daniel, pelo mapa. Se um dia eu estiver de passagem pela cidade, é certeza que visitarei seu restaurante.
    1 ponto
  19. Administrador

    Brasil Mappers (Chat)

    Participe do Chat Brasil Mappers. Chat com mappers experientes, compartilhando experiências, trabalhos e ideias. Se relacione com a galera e aprenda mapping mais rápido! O chat é pelo Skype, você não precisa ser mapper para estar lá, mas não deve falar de outros assuntos ou incomodar os mappers. Clique na imagem para entrar no Chat
    1 ponto
  20. SamueLGuedes

    mega camelopt

    Bem legal, parabéns. só uma dica, quando for postar uma imagem, copie o código de fórum ou selecione a imagem no editor de texto e coloque o link da imagem xD.
    1 ponto
  21. Fiz o script, mas por falta de atenção minha, eu fiz de um jeito diferente do que você pediu .. rs' Só 1 min.. Vou modifica-lo. @edit ! Bem, aqui voltamos nós.. rsrsrs' A primeira configuração, é opcional, mas acho que seria uma boa ... Uma boa mesmo ! "Para o System que tu quer" ... Tanto que fiz. rsrs' Bem, o primeiro System, é de o player receber mensagens ao ele chegar em X level, onde ele já possa comprar X magia. Assim: Bom.. Vamos lá, caso queira essa mensagenzinha, vá em: data/creaturescripts/creaturescript.xml e cole a Tag: <event type="advance" name="AdvanceLevel" event="script" value="checarlevel.lua"/> Registre-a no login.lua com: registerCreatureEvent(cid, "AdvanceLevel") Ainda em data/creaturescripts vá em /scripts e copie um arquivo.lua qualquer, cole lá mesmo e renomeie para: "checarlevel" Logo em seguida, isso dentro: local config = { levelgrupos = {grupo1 = 60, grupo2 = 100}, magiasgrupo1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam"}, magiasgrupo2 = {magia1 = "exevo gran mas mort", magia2 = "exevo gran mas san"} } function onAdvance(cid, skill, oldLevel, newLevel) if getPlayerLevel(cid) == config.levelgrupos.grupo1 then return doPlayerSendTextMessage(cid, 27, "Parabéns, você atingiu ao level ["..getPlayerLevel(cid).."] e ingressou ao Group1 ! Agora você pode obeter a ["..config.magiasgrupo1.magia1.."] ou ["..config.magiasgrupo1.magia2.."], utilize o comando !buysupreme+nomemagia para compra-la. Ex: !buysupreme "..config.magiasgrupo1.magia1..". Para mais informações, utilize o comando !buysupreme") end if getPlayerLevel(cid) == config.levelgrupos.grupo2 then return doPlayerSendTextMessage(cid, 27, "Você chegou ao level ["..getPlayerLevel(cid).."] e recebeu as opções de compra das supremes magias ["..config.magiasgrupo2.magia1.."] ou ["..config.magiasgrupo2.magia2.."], utilize o comando !buysupreme+nome magia para compra-la. Ex: !buysupreme "..config.magiasgrupo2.magia1..". Para mais informações, utilize o comando !buysupreme") end return true end Agora, mudando de rumo, vamos à: data/talkactions/talkactions.xml e colocar: <talkaction log="yes" words="!buysupreme" event="script" value="buyspells.lua"/> Depois, vamos em talkactions/scripts e copiar um qualquer lá, renomear para "buyspells" e colcar isso dentro: local config = { levelgroup1 = 60, --Level Group1. levelgroup2 = 100, --Level Group2. magiasgroup1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam", storage = 465412}, --Magias Grupo 1. Lembrete: Você pode adicionar mais magias, se souber.. magiasgroup2 = {magia1 = "exevo gran mas mort", magia2 = "exevo gran mas san", storage = 456422}, --Magias Grupo 2. Lembrete: Você pode adicionar mais magias, se souber.. moneymagiasgroup1 = 20000, --Quanto vai Custar cada Magia do Grupo 1. moneymagiasgroup2 = 40000, --Quanto vai Custar cada Magia do Grupo 2. } function onSay(cid, words, param) if param == '' then local str = ("SUPREME SPELLS:\n\n[Group 1] (Level "..config.levelgroup1.."): "..config.moneymagiasgroup1.." golds\n"..config.magiasgroup1.magia1.."\n"..config.magiasgroup1.magia2.."\n------------------------\n[Group 2] (Level "..config.levelgroup2.."): "..config.moneymagiasgroup2.." golds\n"..config.magiasgroup2.magia1.."\n"..config.magiasgroup2.magia2.."\n------------------------\n") doShowTextDialog(cid, 1821, str) return true end if param == config.magiasgroup1.magia1 then if getPlayerStorageValue(cid, config.magiasgroup1.storage) == 1 then return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.") end if getPlayerLevel(cid) >= config.levelgroup1 then if doPlayerRemoveMoney(cid, config.moneymagiasgroup1) then doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".") setPlayerStorageValue(cid, config.magiasgroup1.storage, 1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE) return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18) else return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.") end else return doPlayerSendTextMessage(cid, 27, "Você não possuir level suficiente para comprar esta magia. Utilize o comando !buysupreme para informações.") end elseif param == config.magiasgroup1.magia2 then if getPlayerStorageValue(cid, config.magiasgroup1.storage) == 1 then return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.") end if getPlayerLevel(cid) >= config.levelgroup1 then if doPlayerRemoveMoney(cid, config.moneymagiasgroup1) then doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".") setPlayerStorageValue(cid, config.magiasgroup1.storage, 1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE) return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18) else return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.") end else return doPlayerSendTextMessage(cid, 27, "Você não possuir level suficiente para comprar esta magia. Utilize o comando !buysupreme para informações.") end elseif param == config.magiasgroup2.magia1 then if getPlayerStorageValue(cid, config.magiasgroup2.storage) == 1 then return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.") end if getPlayerLevel(cid) >= config.levelgroup2 then if doPlayerRemoveMoney(cid, config.moneymagiasgroup2) then doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".") setPlayerStorageValue(cid, config.magiasgroup2.storage, 1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE) return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18) else return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.") end else return doPlayerSendTextMessage(cid, 27, "Você não possui level suficiente para comprar esta magia.") end elseif param == config.magiasgroup2.magia2 then if getPlayerStorageValue(cid, config.magiasgroup2.storage) == 1 then return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.") end if getPlayerLevel(cid) >= config.levelgroup2 then if doPlayerRemoveMoney(cid, config.moneymagiasgroup2) then doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".") setPlayerStorageValue(cid, config.magiasgroup2.storage, 1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE) return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18) else return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.") end else return doPlayerSendTextMessage(cid, 27, "Você não possui level suficiente para comprar esta magia.") end else doPlayerSendTextMessage(cid, 27, "Esta magia não faz parte de nenhum grupo, utilize o comando: !buysupreme para informações.") end return true end Ps: lá em cima, é a configuração. Dá para colocar mais spells, se você entender de scripts.. O script ficou meio grande, pois você queria algo configurável .. Certo? kk' Enfim, vou dá um exemplo de spell aqui: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.5, -30, -120.1, 0) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 22000) setConditionFormula(condition, -1.1, -1, -1.2, -1) setCombatCondition(combat, condition) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, 465412) == 1) then doCombat(cid, combat, var) return doCreatureSay(cid, "Exevo Gram Mas Vis", TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid,"Você precisa de level 60 e precisa ter comprado esta magia.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end return true end Você vai me achar um mongol e me perguntar, "porque ele tá deixando essa spelll aq???" Bom, é para você ver um exemplo de: if (getPlayerStorageValue(cid, 465412) == 1) then Ele checa se o player tem a storage "465412" se sim, ele faz executar a spell, se não, ele volta uma mensagem... ONDE O PLAYER GANHA ESSA STORAGE? Ham ? Ham ? Bom, lá no talkactions, você vai ver que na parte de: magiasgroup1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam", storage = 465412}, Ele envia essa storage para o player, quando o player compra a spell pelo comando... Mais especificamente dizendo: setPlayerStorageValue(cid, config.magiasgroup1.storage, 1) :V Era pra ser um comando, eu acabei criando um system .. hahaha' Mais uma coisinha, se você usar o comando "!buysupreme" sem ter nada na frente, ele abre um popup, assim: De acordo com as configurações que você fizer no local config. Bom, testa aí, dps responde aí em baixo, aqui funcionou perfeitamente.. :V (Se não souber adicionar mais spells no script, comenta aí.. Que eu ou alguém adc pra você.. rs') Flw!
    1 ponto
  22. Sematico

    [Básico] Telhados Triangulares

    Básico de Telhados Triangulares Tutorial básico de Telhados Triangulares Bom, sempre vejo muitos telhados desse tipo meio malfeitos. Então decide criar três tutoriais (básico, intermediário e avançado) para tentar ajudar o pessoal. Esse aqui é o básico, que visa ensinar a fazer telhados de 1, 2, 3 e 4 SQMs, sempre utilizando as bordas corretas. Então, vamos lá! • • Muitas pessoas apenas sabem desses IDs aqui, que são os mais fáceis de achar no RME: Mas, na verdade, tem esses aqui abaixo também, que são MUITO úteis, como vamos ver em seguida. • • Bom, para começar, coloque oo ID 9535 ou 9536 no lugar onde vai ficar o telhado. Você precisa fazer isso para que o player consiga ver pela janela da casa, quando estiver na frente da mesma. Se você não colocar isso, o player irá ficar na frente da janela (pelo lado de fora), mas não vai conseguir ver dentro da casa. Em seguida, basta preencher o telhado com as peças corretas. Acho que isso ninguém irá ter problema. Muita gente já para por aí, e acaba não percebendo que não colocou a borda desse telhado triangular. Então preste bem atenção nisso. Bem simples, não? • • Se quiser deixar mais detalhado que isso, você pode usar esses IDs aqui para detalhar melhor: E decorar o telhado do jeito que achar melhor! Mas essa parte é opcional, fica como sua decisão. • • O que acharam? Conseguiram fazer no seu map editor? Qualquer dúvidas ou problemas, comente aqui em baixo que o ajudarei assim que conseguir. Bom, aqui está o link dos tutoriais intermediário e avançado, para quem quiser aprender mais sobre esses telhados! Intermediário Avançado Grande abraço!
    1 ponto
  23. eickhoff

    Problemas Com Paladino

    Olha Jhowxd, vou te da uma ajuda, mas mereço um REP+ eu tava com o mesmo problema q você tive q pesquisar muito pra resolver, o pessoal q sabe a maioria nao gosta de falar pra nao existir outras pessoas com esse bug consertado e conseguir mais players pros ot q tem isso consertado, entao, vou te falar nao tem como mudar isso mexendo em script algum, isso só se muda mexendo no code sourcer do seu ot vc olhando no seu codigo sourcer vc vai ver em Weapons.cpp essa parte: WeaponDistance::WeaponDistance(LuaScriptInterface* _interface): Weapon(_interface) { hitChance = -1; maxHitChance = breakChance = ammoAttackValue = 0; swing = params.blockedByShield = false; } Muda o swing ... tira o false e coloca true =) Problema resolvido ^^
    1 ponto
  24. tyuahoi

    [Gesior Aac] Efeitos Para Seu Website

    Olá Vim Trazer Um Script Para Ficar Mais Agradavel o Seu Site. 1º Efeito De Texto Ficar Ao Redor Da Seta Do seu Mouse. Basta adicionar isso em seu <head> da layout.php <style type="text/css"> /* Circle Text Styles */ #outerCircleText { /* Optional - DO NOT SET FONT-SIZE HERE, SET IT IN THE SCRIPT */ font-style: italic; font-weight: bold; font-family: 'comic sans ms', verdana, arial; color: #000; /* End Optional */ /* Start Required - Do Not Edit */ position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;} #outerCircleText div {position: relative;} #outerCircleText div div {position: absolute;top: 0;left: 0;text-align: center;} /* End Required */ /* End Circle Text Styles */ </style> <script type="text/javascript"> /* Circling text trail- Tim Tilton Website: http://www.tempermedia.com/ Visit: http://www.dynamicdrive.com/ for Original Source and tons of scripts Modified Here for more flexibility and modern browser support Modifications as first seen in http://www.dynamicdrive.com/forums/ username:jscheuer1 - This notice must remain for legal use */ ;(function(){ // Your message here (QUOTED STRING) var msg = "Real Server!"; /* THE REST OF THE EDITABLE VALUES BELOW ARE ALL UNQUOTED NUMBERS */ // Set font's style size for calculating dimensions // Set to number of desired pixels font size (decimal and negative numbers not allowed) var size = 24; // Set both to 1 for plain circle, set one of them to 2 for oval // Other numbers & decimals can have interesting effects, keep these low (0 to 3) var circleY = 0.75; var circleX = 2; // The larger this divisor, the smaller the spaces between letters // (decimals allowed, not negative numbers) var letter_spacing = 5; // The larger this multiplier, the bigger the circle/oval // (decimals allowed, not negative numbers, some rounding is applied) var diameter = 10; // Rotation speed, set it negative if you want it to spin clockwise (decimals allowed) var rotation = 0.4; // This is not the rotation speed, its the reaction speed, keep low! // Set this to 1 or a decimal less than one (decimals allowed, not negative numbers) var speed = 0.3; ////////////////////// Stop Editing ////////////////////// if (!window.addEventListener && !window.attachEvent || !document.createElement) return; msg = msg.split(''); var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20, ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [], o = document.createElement('div'), oi = document.createElement('div'), b = document.compatMode && document.compatMode != "BackCompat"? document.documentElement : document.body, mouse = function(e){ e = e || window.event; ymouse = !isNaN(e.pageY)? e.pageY : e.clientY; // y-position xmouse = !isNaN(e.pageX)? e.pageX : e.clientX; // x-position }, makecircle = function(){ // rotation/positioning if(init.nopy){ o.style.top = (b || document.body).scrollTop + 'px'; o.style.left = (b || document.body).scrollLeft + 'px'; }; currStep -= rotation; for (var d, i = n; i > -1; --i){ // makes the circle d = document.getElementById('iemsg' + i).style; d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px'; d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px'; }; }, drag = function(){ // makes the resistance y[0] = Y[0] += (ymouse - Y[0]) * speed; x[0] = X[0] += (xmouse - 20 - X[0]) * speed; for (var i = n; i > 0; --i){ y[i] = Y[i] += (y[i-1] - Y[i]) * speed; x[i] = X[i] += (x[i-1] - X[i]) * speed; }; makecircle(); }, init = function(){ // appends message divs, & sets initial values for positioning arrays if(!isNaN(window.pageYOffset)){ ymouse += window.pageYOffset; xmouse += window.pageXOffset; } else init.nopy = true; for (var d, i = n; i > -1; --i){ d = document.createElement('div'); d.id = 'iemsg' + i; d.style.height = d.style.width = a + 'px'; d.appendChild(document.createTextNode(msg[i])); oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0; }; o.appendChild(oi); document.body.appendChild(o); setInterval(drag, 25); }, ascroll = function(){ ymouse += window.pageYOffset; xmouse += window.pageXOffset; window.removeEventListener('scroll', ascroll, false); }; o.id = 'outerCircleText'; o.style.fontSize = size + 'px'; if (window.addEventListener){ window.addEventListener('load', init, false); document.addEventListener('mouseover', mouse, false); document.addEventListener('mousemove', mouse, false); if (/Apple/.test(navigator.vendor)) window.addEventListener('scroll', ascroll, false); } else if (window.attachEvent){ window.attachEvent('onload', init); document.attachEvent('onmousemove', mouse); }; })(); </script> Aonde Esta Escrito Real Server Voçe Muda Para A Mensagem Que Voçe Quiser. Imagem De Como Ira Ficar. Simples Mais Util. 2º Efeito De Neve Em Seu Web Site Acresente Isso Em layout.php <script type="text/javascript"> /* Snow Fall 1 - no images - Java Script Visit http://rainbow.arch.scriptmania.com/scripts/ for this script and many more */ // Set the number of snowflakes (more than 30 - 40 not recommended) var snowmax=35 // Set the colors for the snow. Add as many colors as you like var snowcolor=new Array("#AAAACC","#DDDDFF","#CCCCDD","#F3F3F3","#F0FFFF") // Set the fonts, that create the snowflakes. Add as many fonts as you like var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS") // Set the letter that creates your snowflake (recommended: * ) var snowletter="*" // Set the speed of sinking (recommended values range from 0.3 to 2) var sinkspeed=0.6 // Set the maximum-size of your snowflakes var snowmaxsize=22 // Set the minimal-size of your snowflakes var snowminsize=8 // Set the snowing-zone // Set 1 for all-over-snowing, set 2 for left-side-snowing // Set 3 for center-snowing, set 4 for right-side-snowing var snowingzone=1 /* // * NO CONFIGURATION BELOW HERE * */ // Do not edit below this line var snow=new Array() var marginbottom var marginright var timer var i_snow=0 var x_mv=new Array(); var crds=new Array(); var lftrght=new Array(); var browserinfos=navigator.userAgent var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/) var ns6=document.getElementById&&!document.all var opera=browserinfos.match(/Opera/) var browserok=ie5||ns6||opera function randommaker(range) { rand=Math.floor(range*Math.random()) return rand } function initsnow() { if (ie5 || opera) { marginbottom = document.body.clientHeight marginright = document.body.clientWidth } else if (ns6) { marginbottom = window.innerHeight marginright = window.innerWidth } var snowsizerange=snowmaxsize-snowminsize for (i=0;i<=snowmax;i++) { crds[i] = 0; lftrght[i] = Math.random()*15; x_mv[i] = 0.03 + Math.random()/10; snow[i]=document.getElementById("s"+i) snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)] snow[i].size=randommaker(snowsizerange)+snowminsize snow[i].style.fontSize=snow[i].size snow[i].style.color=snowcolor[randommaker(snowcolor.length)] snow[i].sink=sinkspeed*snow[i].size/5 if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size) snow[i].style.left=snow[i].posx snow[i].style.top=snow[i].posy } movesnow() } function movesnow() { for (i=0;i<=snowmax;i++) { crds[i] += x_mv[i]; snow[i].posy+=snow[i].sink snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]); snow[i].style.top=snow[i].posy if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){ if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} snow[i].posy=0 } } var timer=setTimeout("movesnow()",50) } for (i=0;i<=snowmax;i++) { document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>") } if (browserok) { window.onload=initsnow } </SCRIPT> Imagem De Como Ira Ficar. Simples Mais Util.
    1 ponto
  25. thiago2300

    [8.6] Subwat Editado Por Min

    Ok Amigo Vou Trocar
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...