-
Total de itens
3406 -
Registro em
-
Última visita
-
Dias Ganhos
113
Tudo que Vodkart postou
-
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
-
vc deletou o buypremium_command.xml na pasta mods e deu /reload mods e /reload talkactions?
-
especifique melhor seu pedido, serão quais leveis por exemplo? serão items? ou só exp? detalhes.
-
pqp velho, que script chato de fazer, ele não é difícil, só é bem chatinho msm ¬¬ Mods: <?xml version="1.0" encoding="UTF-8"?> <mod name="Kung Task" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes"> <config name="kung_func"><![CDATA[ kungtask = { ["dragon"] = {storages = {620001,630001}, count = 1500,exp = 1000}, ["dragon lord"] = {storages = {620002,630002}, count = 600, exp = 2000}, ["hydra"] = {storages = {620003,630003}, count = 240, exp = 3000}, ["frost dragon"] = {storages = {620004,630004} ,count = 600, exp = 4000}, ["dragon guardian"] = {storages = {620005,630005} ,count = 1000, exp = 5000}, ["demondras"] = {storages = {620006,630006} ,count = 600, exp = 6000}, ["thunder dragon"] = {storages = {620007,630007} ,count = 1000, exp = 7000} } function ZerarTask(cid) for var, ret in pairs(kungtask) do if getPlayerStorageValue(cid, ret.storages[2]) ~= -1 and getPlayerStorageValue(cid,ret.storages[1]) <= os.time() then setPlayerStorageValue(cid, ret.storages[2], -1) setPlayerStorageValue(cid, ret.storages[1], -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You not have completed the task of "..var.." in the request time and it was zeroed") end end end ]]></config> <event type="login" name="KungRegister" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "KillingKung") return true end]]></event> <event type="kill" name="KillingKung" event="script"><![CDATA[ domodlib('kung_func') function onKill(cid, target) if(isMonster(target) == TRUE) then local n = getCreatureName(target) local name_monster = kungtask[string.lower(n)] if(name_monster and getPlayerStorageValue(cid,name_monster.storages[1]) >= os.time()) then local contagem = getPlayerStorageValue(cid, name_monster.storages[2]) if contagem > name_monster.count then return true end setPlayerStorageValue(cid, name_monster.storages[2], contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, ""..((contagem+1) < name_monster.count and "["..n.." Task] "..(contagem+1).."/"..name_monster.count or "["..n.." Task] Finaliza")..".") end end return true end]]></event> <globalevent name="ZerarTask" interval="60" event="script"><![CDATA[ domodlib('kung_func') function onThink(interval, lastExecution) local on = getPlayersOnline() if #on > 0 then for i = 1, #on do ZerarTask(on[i]) end end return true end]]></globalevent> </mod> Npc: domodlib('kung_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) local days = 7 if isInArray({"task","mission", "missão"}, msg) then npcHandler:say("Me diga o nome do monstro que você deseja fazer a task!", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if kungtask[msg] then if getPlayerStorageValue(cid, kungtask[msg].storages[1]) == -1 then stor,name,count,stor2 = kungtask[msg].storages[1],msg,kungtask[msg].count,kungtask[msg].storages[2] npcHandler:say("Ótimo! Você precisa matar pelo menos "..count.." "..name.." em um prazo de "..days.." dias para te dar recompensa. Aceita? {yes}", cid) talkState[talkUser] = 2 else npcHandler:say("Você já está participando desta task.", cid) talkState[talkUser] = 1 end else npcHandler:say("digite o nome certo do monstro.", cid) talkState[talkUser] = 1 end elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 2) then setPlayerStorageValue(cid, stor, os.time()+days*86400) setPlayerStorageValue(cid, stor2, 0) npcHandler:say("Você já pode começar a matar "..name..". Volte aqui quando matar "..count.." "..name.." para ser recompensado. O prazo é até "..os.date("%d %B %Y %X", getPlayerStorageValue(cid,stor))..".", cid) talkState[talkUser] = 0 elseif isInArray({"entregar","receber", "recompensa"}, msg) then for var, ret in pairs(kungtask) do if getPlayerStorageValue(cid,ret.storages[1]) >= os.time() and getPlayerStorageValue(cid,ret.storages[2]) >= ret.count then doPlayerAddExp(cid, ret.exp) setPlayerStorageValue(cid, ret.storages[2], -1) setPlayerStorageValue(cid, ret.storages[1], -1) return npcHandler:say("Obrigado! você recebeu "..ret.exp.." de experience por ter terminado a task do "..var, cid) else return npcHandler:say("Desculpe, mas você não terminou nenhuma missão.", cid) end end elseif isInArray({"no","nao"}, msg) then selfSay("tudo bem então.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) no npc vc fala: hi task NOME DA TASK e pra receber a recompensa vc fala hi entregar e o npc vai entregar a recompensa da task que ele TERMINOU para o player
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.