-
Total de itens
3406 -
Registro em
-
Última visita
-
Dias Ganhos
113
Tudo que Vodkart postou
-
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:
-
talkaction Trocar 1Kk Por Gold Ingot
tópico respondeu ao pessoa93 de Vodkart em Actions e Talkactions
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 -
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
-
sobre que? actions?
-
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
-
if item.itemid == XXXX and item2.itemid == YYYY then doTransformItem(item2.uid, ID) -- ID É O ITEM DO ITEM QUE VAI SE TRANSFORMA end
-
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
-
acho que teria que editar as source. Talvez sim, acho que já existe diversos desse item.
-
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'
-
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)
-
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.
-
reportado para moverem
-
n mexam com ele, n eh td mundo que tem a Pulseira Camarote Brahma e Boate.
-
@nathan blz, to terminando de assistir o filme e já entro @kung thiagoredlife@hotmail.com
-
hj é domingo > tenho tempo e lua não tem mistério, se aprende fácil, basta querer aprender tbm
-
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
-
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
-
[Creaturescripts] Walking Effect On Outfit
tópico respondeu ao AnneMotta de Vodkart em Globalevents e Spells
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 -
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
-
continua sendo um piadista
-
Ah, agora sim tia se ngm responder, qndo tiver um tempinho eu entrego o npc. abraçs
-
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...
-
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.