Ir para conteúdo

Vodkart

Herói
  • Total de itens

    3406
  • Registro em

  • Última visita

  • Dias Ganhos

    113

Tudo que Vodkart postou

  1. Explicação: É o sistema de casamento conhecido, porém foi reformulado para funcionar em versões mais recentes. Descrição: O sistema conta com: Item: Os jogadores que se casar receberão um Wedding ring com seus nomes e data do casamento. Outfit: jogadores que se casam recebem outfit, caso se divorciem, perder as outfits. Look: o look mostra com quem é casado Combate: Os jogador não pode atacar seu patner Comandos: /marriage info -- mostra em uma janela o preço do casamento/divórcio e o level minimo para casar. /marriage status -- mostra com quem é casado e a data do casamento Outra coisa bem importante é que os dois jogadores NÃO precisam estar online para se divorciarem, exemplo: JOÃO e casado com MARIA, JOÃO vai até o npc e paga um preço para de divorciar, só quem pede o divorcio que paga a taxa, logo MARIA não precisa pagar nada pois seu Ex-Patner JOÃO já pagou. O que ela precisa fazer é "assinar" com o npc o seu divorcio também. Como casar? Player1: Player2: Na sua db execute: CREATE TABLE marriage_system ( id INTEGER NOT NULL, player_id INTEGER NOT NULL, partner VARCHAR( 255 ) NOT NULL, marriage_date INTEGER NOT NULL, PRIMARY KEY ( id ) ); Caso você ter a outfit Husband e Wife(de casamento) no seu servidor abra o spoiler: Mods: Npc: Configuração:
  2. procura o id do gold ingot no items.xml e adiciona a tag: <attribute key="worth" value="1000000" /> aí eles vão aceitar hmmm não sabia disso, valeu pela dica foi bastante útil xD
  3. oq vc quis dizer com "no maximo 2 player por IP" ?
  4. rapaz, amanha eu dou uma olhada, mas oq tem é na seção de tutorial mesmo, porém todos desatualizados. amanha eu procuro pq to indo dormir agr abraços
  5. function onUse(cid, item, frompos, item2, topos) if item.itemid == 2006 and item2.itemid == 2495 then if getCald(cid) <= 0 then return doPlayerSendCancel(cid, "Voce nao tem carga o suficiente!") end removeCald(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"parabéns!") doSendMagicEffect(getPlayerPosition(cid), 27) end return true end
  6. if item.itemid == XXXX and item2.itemid == YYYY then doTransformItem(item2.uid, ID) -- ID É O ITEM DO ITEM QUE VAI SE TRANSFORMA end
  7. Vodkart

    Dúvidas Com Scripts

    monster = {name = "Rat"} for _, var in pairs(monster) do if var == "Rat" then print("Cave Rate") end end ou a tabela sem o index 'name': monster = {"Rat","Demon","Hydra"} for i = 1, #monster do if monster[i] == "Rat" then print("Cave Rate") end end
  8. acho que teria que editar as source. Talvez sim, acho que já existe diversos desse item.
  9. Versão testada: 9.1 Descrição: É um npc simples que tem como função alugar determinadas montarias por certo tempo, dias para ser exato. Em Mods: AluguelMount.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="Aluguel Mounts" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes"> <config name="aluguel_func"><![CDATA[ Aluguel_mounts = { ["war horse"] = {price = 10000, days = 2, mountid = 17, level = 10, premium = false, storage = 500561}, ["fire war horse"] = {price = 30000, days = 1, mountid = 23, level = 20, premium = false, storage = 500562}, ["sandstone scorpion"] = {price = 50000, days = 1, mountid = 21, level = 30, premium = true, storage = 500563} } function doRemovePlayerMount(cid, mountId) doPlayerRemoveMount(cid, mountId) return doCreatureChangeOutfit(cid,{lookType = getCreatureOutfit(cid).lookType, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons}) end function CheckRentMount(cid) for var, ret in pairs(Aluguel_mounts) do if canPlayerRideMount(cid, ret.mountid) and getPlayerStorageValue(cid, ret.storage) ~= -1 and getPlayerStorageValue(cid, ret.storage) <= os.time() then doRemovePlayerMount(cid, ret.mountid) doPlayerSendTextMessage(cid,18,"O tempo da sua montaria "..var.." acabou, para adquirir ela novamente volte ao npc.") end end end ]]></config> <globalevent name="CheckMount" interval="60000" event="script"><![CDATA[ domodlib('aluguel_func') function onThink(interval, lastExecution) local on = getPlayersOnline() if #on > 0 then for i = 1, #on do CheckRentMount(on[i]) end end return true end]]></globalevent> </mod> obs: Checar duas coisas em mods, primeira: Se a função que checa se tem a mount é 'canPlayerRideMount' ou 'getPlayerMount', caso for 'getPlayerMount' trocar: canPlayerRideMount(cid, ret.mountid) por: getPlayerMount(cid, ret.mountid) segunda: o intervalo de tempo na tag do globalevents, no meu server era em mile segundos: interval="60000" -- caso o seu não seja em mile segundos troque 60000 por 60. Data/Npc Peach.xml <?xml version="1.0"?> <npc name="Peach" script="data/npc/scripts/aluguelmounts.lua" walkinterval="50000" floorchange="0"> <health now="1000" max="1000"/> <look type="130" head="0" body="114" legs="114" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. You want to {rent} a {mount}?"/> </parameters> </npc> Data/Npc/Script aluguelmounts.lua domodlib('aluguel_func') local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({'aluguel','alugar', 'rent', 'mounts', 'mount'}, msg) then npcHandler:say("Você pode comprar {war horse}, {fire war horse} e {sandstone scorpion}!", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if Aluguel_mounts[msg] then if Aluguel_mounts[msg].premium == true and not isPremium(cid) then npcHandler:say('Você precisa ser premium para alugar essa montaria.', cid) return true elseif getPlayerLevel(cid) < Aluguel_mounts[msg].level then npcHandler:say('você precisa ter level ' .. Aluguel_mounts[msg].level .. ' ou mais para alugar essa montaria.', cid) return true elseif getPlayerStorageValue(cid, Aluguel_mounts[msg].storage) >= os.time() then npcHandler:say('você já alugou essa montaria!', cid) return true end name,price,stor,days,mountid = msg,Aluguel_mounts[msg].price,Aluguel_mounts[msg].storage,Aluguel_mounts[msg].days,Aluguel_mounts[msg].mountid npcHandler:say('Você quer alugar a montaria '..name..' por '..days..' dia'..(days > 1 and 's' or '')..' no preço de '..price..' gps? {yes}', cid) talkState[talkUser] = 2 else npcHandler:say('Desculpe, eu não vendo essa montaria.', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if doPlayerRemoveMoney(cid, price) then doPlayerAddMount(cid, mountid) setPlayerStorageValue(cid, stor, os.time()+days*86400) npcHandler:say('Aqui está sua montaria '..name..', ela irá durar até '..os.date("%d %B %Y %X", getPlayerStorageValue(cid,stor))..'.', cid) else npcHandler:say('você não tem dinheiro suficiente para alugar a montaria!', cid) talkState[talkUser] = 0 end elseif msg == "no" then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Configuração: Em mods tem uma tabela chamada 'Aluguel_mounts'
  10. Vodkart

    Dúvidas Com Scripts

    acho que mudar diretamente na tabela não tem como, se for usado em um script dá para apenas substituir o valor da tabela temporariamente (geralmente no tempo de sua execução)
  11. Em um otserv é possível acabar com os bots sim, mas acabando com os bots acaba com a diversão do server e resultando na falência do mesmo, ou você acha que a maioria dos jogadores que jogam otserv vão para que? só para se divertir e brincar, se fosse para levar algo a sério que joguem o global.
  12. Vodkart

    Npc De Recompensa

    reportado para moverem
  13. n mexam com ele, n eh td mundo que tem a Pulseira Camarote Brahma e Boate.
  14. Vodkart

    Npc De Recompensa

    @nathan blz, to terminando de assistir o filme e já entro @kung thiagoredlife@hotmail.com
  15. Vodkart

    Npc De Recompensa

    hj é domingo > tenho tempo e lua não tem mistério, se aprende fácil, basta querer aprender tbm
  16. Vodkart

    Npc

    sim, foi oq eu falei trocar o nome da tabble vlw topico reportado
  17. Vodkart

    Npc De Recompensa

    Não precisa, é só um item então de boa, vou almoçar e depois entrego vlw ------------------------------------------------- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) tabble = { [50] = {item = {2173,1}, storage = 201320}, [100] = {item = {2160,5}, storage = 201321}, [150] = {item = {2123,1}, storage = 201322}, [200] = {item = {2466,1}, storage = 201320} } if isInArray({"recompensa","reward", "receber", "level"}, msg) then npcHandler:say("Olá guerreiro, eu posso entregar recompensas para o level {50}, {100}, {150} e {200}! qual dos leveis você deseja receber a recompensa?", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if tabble[getNumber(msg)] then if getPlayerStorageValue(cid, tabble[getNumber(msg)].storage) <= 0 then if getPlayerLevel(cid) >= getNumber(msg) then doPlayerAddItem(cid,tabble[getNumber(msg)].item[1],tabble[getNumber(msg)].item[2]) setPlayerStorageValue(cid, tabble[getNumber(msg)].storage, 1) npcHandler:say("Parabéns! Você recebeu "..tabble[getNumber(msg)].item[2].." "..getItemNameById(tabble[getNumber(msg)].item[1]), cid) else npcHandler:say("Desculpe, mas você não tem level para receber essa recompensa!", cid) end else npcHandler:say("Desculpe, mas você já recebeu a sua recompensa!", cid) end else npcHandler:say("Desculpe, mas não tenho recompensa para esse level!", cid) end elseif isInArray({"no","nao"}, msg) then selfSay("Then not.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end
  18. Vodkart

    Npc De Recompensa

    outra coisa, serão vários items? exemplo: 2 fire sword, 3 crown legs e 2 aol ou só um item e dinheiro? pq se for mais de um item eu coloco uma função ;x obs: vc usa aquele npc ainda do simple task 2.0? pq lá tem as funções e tal... responde ai
  19. tenta usar assim: function onLogin(cid) registerCreatureEvent(cid, "EffectOutLogin") registerCreatureEvent(cid, "OutfitEffects") return doCreatureChangeOutfit(cid,{lookType = getCreatureOutfit(cid).lookType, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons}) end local events = {} function onOutfit(cid, old, current) local effect = { [136] = 3, [128] = 3, -- citizen [270] = 27,[273] = 27, -- jester [156] = 61,[152] = 61, -- assassin [147] = 44,[143] = 44, -- barbarian [148] = 45,[144] = 45, -- druid [157] = 68,[153] = 68, -- beggar [149] = 36,[145] = 36, -- wizard [279] = 17,[278] = 17, -- brotherwood [137] = 39,[129] = 39, -- hunter [141] = 66,[133] = 66, -- summoner [142] = 34,[134] = 34, -- warrior [155] = 31,[151] = 31, -- pirate [158] = 46,[154] = 46, -- shaman [288] = 6,[289] = 6 -- demonhunter } local o,c= effect[old.lookType],effect[current.lookType] if getPlayerAccess(cid) > 2 then return true elseif (not o or not c or old.lookAddons == 3 and o) then stopEvent(events[getPlayerGUID(cid)]) end if current.lookAddons == 3 and c then function WalkEffect(cid, c, pos) if not isCreature(cid) then return LUA_ERROR end if c then p = getThingPos(cid) local x = {[0] = {x=p.x, y=p.y+1, z=p.z},[1] = {x=p.x-1, y=p.y, z=p.z},[2] = {x=p.x, y=p.y-1, z=p.z},[3] = {x=p.x+1, y=p.y, z=p.z}} if p.x ~= pos.x or p.y ~= pos.y or p.z ~= pos.z then doSendMagicEffect(x[getCreatureLookDirection(cid)], c) end events[getPlayerGUID(cid)] = addEvent(WalkEffect, 100, cid, c, p) end return true end WalkEffect(cid, c, {x=0, y=0, z=0}) end return true end
  20. Vodkart

    Npc

    Mais de um npc para a mesma função? porque se você for criar um npc novo com monstros diferentes e tal, teria que criar uma tabela diferente e modificar o nome da tabble no npc tbm, ai pede para alguém mais experiente fazer pra vc
  21. Vodkart

    Retirado

    continua sendo um piadista
  22. Vodkart

    Npc De Recompensa

    Ah, agora sim tia se ngm responder, qndo tiver um tempinho eu entrego o npc. abraçs
  23. Vodkart

    Npc De Recompensa

    wtf? quero saber o seguinte, ele só vai receber o prêmio no level 50 por exemplo, e depois se ele atingir o level 100 recebe mais alguma coisa? ou só vai ser pra um certo nível mesmo...
  24. eu fiz um por npc, vou te passar por msn, é esse o seu: jhonw_13@hotmail.com
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...