Search the Community
Showing results for tags 'system'.
-
Nome Do Autor : Xisto Versão Testada : 8.54 -- Pokemon Dash Advanced / Centurion Explicação : Um sistema de pesca em que e obrigatorio o uso de uma certa roupa.Créditos : Xisto 1 - Script local storage = 15458 local storageP = 154580 local bonus = 1 local limite = 80 local function doFish(cid, pos, ppos, chance, interval, number) if not isCreature(cid) then return false end if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then return false end if getPlayerStorageValue(cid, storage) ~= number then return false end doSendMagicEffect(pos, CONST_ME_LOSEENERGY) local peixe = 0 local playerpos = getClosestFreeTile(cid, getThingPos(cid)) local fishes = {} local randomfish = "" --alterado!! if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, 20) end for a, b in pairs (fishing) do if getPlayerSkillLevel(cid, 6) >= b.skill then table.insert(fishes, a) end end if math.random(1, 100) <= chance then if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus) end randomfish = fishes[math.random(#fishes)] peixe = doSummonCreature(randomfish, playerpos) if not isCreature(peixe) then addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) return true end doSetMonsterPassive(peixe) doWildAttackPlayer(peixe, cid) if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) ---- 1 e o efeito que ira sair ao usar a rod na agua. doChallengeCreature(getCreatureSummons(cid)[1], peixe) else doSendMagicEffect(getThingPos(cid), 173) doChallengeCreature(cid, peixe) end setPlayerStorageValue(cid, storageP, 1) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_OUTFIT) return true end addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) setPlayerStorageValue(cid, storageP, 1) doCreatureSetNoMove(cid, true) return true end local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825} function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerGroupId(cid) == 11 then return true end local checkPos = toPos checkPos.stackpos = 0 if getTileThingByPos(checkPos).itemid <= 0 then doPlayerSendCancel(cid, '!') return true end if not isInArray(waters, getTileInfo(toPos).itemid) then return true end if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then doPlayerSendCancel(cid, "You can't fish while surfing/flying.") return true end if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can't fish while surfing neither flying above water.") return true end if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.") return true end if getPlayerStorageValue(cid, storageP) > 0 then doPlayerSendTextMessage(cid, 27, "You are already fishing.") return true end if getPlayerSex(cid) == 1 then if getCreatureOutfit(cid).lookType ~= 520 then ---- Outfit necessaria para usar o fishing doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fisher outfit for fishing.") return false end else if getCreatureOutfit(cid).lookType ~= 521 then ---- Outfit necessaria para usar o fishing doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fisher outfit for fishing.") return false end end if not tonumber(getPlayerStorageValue(cid, storage)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[fishing.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, storage).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, storage, 1) end setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1) if getPlayerStorageValue(cid, storage) >= 800 then setPlayerStorageValue(cid, storage, 1) end local delay = 3500 - getPlayerSkillLevel(cid, 6) * 25 local chance = 10 + getPlayerSkillLevel(cid, 6) / 2.5 outfit = getCreatureOutfit(cid) if getPlayerSex(cid) == 0 then out = 1467 --- Outfit de Pesca FEMININA else out = 1468 --- Outfit de Pesca MASCULINA end doSetCreatureOutfit(cid, {lookType = out, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1) doFish(cid, toPos, getThingPos(cid), chance, delay, getPlayerStorageValue(cid, storage)) return true end 2 - Tag do Actions.xml A tag ja existe no server baixado por voce. Mais caso queira estarei postando as que eu uso: <action itemid="2580" event="script" value="tools/fishing.lua" allowfaruse="1"/> <action itemid="10223" event="script" value="tools/fishing.lua" allowfaruse="1"/> 3 - Modificações Local para mudar o ID das roupas com a vara de pesca: out = 1467 --- Outfit de Pesca FEMININA else out = 1468 --- Outfit de Pesca MASCULINA Caso nao tenham a outfit busquem no client da PxG 3.1 - Efeitos Caso queira mudar o efeito que apareçe ao pescar mude aqui: doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) 1 em vermelho e o efeito Esse script pode ser modificado facilmente por alguem experiente....
-
Pessoal, sou novo no XTibia e gostaria de pedir uma ajuda a vocês. Voltei a administrar servidor de Tibia e estava aqui tentando editar uns scripts para usar o comando de !reset. Esse comando funcionou bem no meu Server local config = { backToLevel = 40, redskull = false, -- need to be without redskull to reset? battle = true, -- need to be without battle to reset? pz = false, -- need to be in protect zone to reset? stages = { {resets = 4, level = 350, premium = 330}, {resets = 9, level = 355, premium = 340}, {resets = 14, level = 450, premium = 450}, {resets = 19, level = 600, premium = 600}, {resets = 24, level = 800, premium = 800}, {resets = 29, level = 1000, premium = 1000}, {resets = 34, level = 1100, premium = 1100}, {resets = 39, level = 1200, premium = 1200}, {resets = 44, level = 1300, premium = 1300}, {resets = 49, level = 1500, premium = 1500}, {resets = 54, level = 1600, premium = 1600}, {resets = 59, level = 1650, premium = 1650}, {resets = 64, level = 1700, premium = 1700}, {resets = 69, level = 1800, premium = 1800}, {resets = 74, level = 1850, premium = 1850}, {resets = 79, level = 1900, premium = 1900}, {resets = 84, level = 2200, premium = 2200}, {resets = 89, level = 2500, premium = 2500}, {resets = 94, level = 5000, premium = 5000}, {resets = 2^1024, level = 7000, premium = 7000} } } function onSay(cid, words, param) local function getPlayerResets(cid) local resets = getPlayerStorageValue(cid, 500) return resets < 0 and 0 or resets end local function doPlayerAddResets(cid, count) setPlayerStorageValue(cid, 500, getPlayerResets(cid) + count) end if config.redskull and getCreatureSkullType(cid) == 4 then return doPlayerSendCancel(cid, "Voce precisa estar sem red skull para resetar.") elseif config.pz and not getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "Voce precisa estar em protection zone para resetar.") elseif config.battle and getCreatureCondition(cid, CONDITION_INFIGHT) then return doPlayerSendCancel(cid, "Voce precisa estar sem battle para resetar.") end local resetLevel = 0 for x, y in ipairs(config.stages) do if getPlayerResets(cid) <= y.resets then resetLevel = isPremium(cid) and y.premium or y.level break end end if getPlayerLevel(cid) < resetLevel then return doPlayerSendCancel(cid, "Voce precida de level " .. resetLevel .. " para o proximo reset.") end doPlayerAddResets(cid, 1) local healthMax, manaMax = getCreatureMaxHealth(cid), getCreatureMaxMana(cid) doPlayerAddLevel(cid, -(getPlayerLevel(cid) - config.backToLevel)) setCreatureMaxHealth(cid, healthMax) setCreatureMaxMana(cid, manaMax) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_FIREWORK_RED) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Now you have " .. getPlayerResets(cid) .. " " .. (getPlayerResets(cid) == 1 and "reset" or "resets") .. ".") return true end Porém, eu precisava de algumas modificações nele... eu precisava definir alguns pontos de mudança pós o reset, por exemplo, o jogador ganha 10% a mais de xp... esse tipo de coisa. Fora isso, o que eu precisava também (e mais importante) seria que esse reset fosse contabilizado numa row 'resets' da database do meu server que é MySQL. Vocês poderiam, por gentileza, me ajudar ou dar uma luz relacionado a isso? Ficaria muito grato!
-
Bom, como um individuo(Vudi) não sabe cumprir o que fala, vou postar o sistema aqui.(não cabe ao post explicar aqui) Bom, aqui está o smeargle system, igual o da PxG. Vamos lá. 1 - Vá na pasta Lib, substitua seu cooldown bar.lua por isso: 2 - Ainda no Lib, no fim(depois do ultimo end) do Some Functions.lua, adicione isso: 3 - Agora no order.lua, do Actions, em baixo de: Adicione: 4 - Se seu servidor ja tiver os spells, sketch 1, sketch 2... Substitua por esses(data/lib/pokemon moves.lua): Se não, use os mesmos acima, não esqueça de adicionar no spells.xml. 5 - Agora, vá em talkactions/scripst, abra o move1.lua e substitua: Por Depois: Por: Pronto, se tiver feito tudo certo, funcionará. Como ficará: Como usar: Créditos: Eu(Todo o script)
- 32 replies
-
- pokextibia
- pda
-
(and 3 more)
Tagged with:
-
Alguem teria um script de reset preferencialmente por source para otx2 atualizado https://github.com/mattyx14/otxserver/tree/otxserv2 se for por distro as mudanças me diga aonde mudar eu mesmo compilo ou script normal mesmo, porem as configuraçoes do script seriam as seguintes level necessario para resetar = x aumento de x level para reset = x item e quantidade de item para resetar = x,x aumento de x items por reset= x vida e mana volta ao inicio ao resetar = true or false skills voltao ao inicio ao resetar = true false hp e mp adicional ganho /lvl por reset = 1% (configurável) dano e heal adicionado por reset = 1% configuravel reset voc = {x, x, x, x, x, x, x} (quando der o 10 reset por exemplo(configuravel) , será feito uma checagem de vocation para poder resetar, por exemplo até 10 resets qualquer voc reseta nao será feito checagem, porem no reset 10 só resetará se for uma das seguintes vocações, se for mais facil deixa só 1 reset configuravel assim se for dificil pode colocar apartir de tantos resets precisa da classe, coloque oque for mais pratico pois o efeito será o mesmo. teleport para o templo= true or false pode resetar com battle= true or false a cada x resets ganhe tal item (configuravel) reset x recebe item x ao resetar, reset =5 {2160, 100} - exemplo. nao me importa se será storage, source, script. só me importo com o resultado e que nao tenha bugs, quanto mais bem feito melhor na hora de negociar o preço, se nao for permitido este tipo de post aqui alguem me avise que eu retiro ele. se tem outro local por favor movam ele, mais informações mande msg no privado responderei assim que possível.
-
- reset
- reset system
-
(and 4 more)
Tagged with:
-
creatureevent System de Premiação por ficar ONLINE
GstvoLiber posted a topic in Globalevents e Spells
Bom galera, quis fazer o script pra ajudar um membro da comunidade.. Espero que gostem! É um script simples, que a cada 1 hora online, dá um item para o player. Esse tempo online será salva num espaço na sua database, e depois vou aprimorar o script para criar um rank dos mais online. De qualquer forma, modificações desse script viram, então aguardem. Em creaturescript.xml adicione: <event type="login" name="tempo_on_reward" event="script" value="rewardON.lua"/> <event type="logout" name="tempo_on_reward2" event="script" value="rewardON.lua"/> Em login.lua adicione: registerCreatureEvent(cid, "tempo_on_reward2") Agora, na pasta scripts, cria um arquivo chamado rewardON.lua e adicione dentro: -- Script made by GstavoLiber -- -- Config -- storage = 2001 -- storage que vai salvar o tempo online temporariamente. item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) if(getPlayerStorageValue(uid, storage) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storage) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") setPlayerStorageValue(uid, storage, 0) setPlayerStorageValue(uid, storage, rest) return TRUE else setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) return TRUE -- return false impede o jogador de dar logout end Pessoal, tenho uma leve impressão que eu errei na lógica, então caso não funcione o de cima, testa esse de baixo: -- Script made by GstavoLiber -- -- Config -- storageInit = 2001 -- storage que vai salvar o tempo online temporariamente. storageFinish = 2002 -- storage que vai salvar o tempo online temporariamente. storageTotal = 2003 item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) setPlayerStorageValue(uid, storageInit, os.time()) if(getPlayerStorageValue(uid, storageTotal) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storageTotal) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") if(rest > 0) then setPlayerStorageValue(uid, storageTotal, rest) else setPlayerStorageValue(uid, storageTotal, 0) end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storageFinish, os.time()) setPlayerStorageValue(uid, storageTotal, getPlayerStorageValue(uid, storageTotal) + (getPlayerStorageValue(uid, storageFinish) - getPlayerStorageValue(uid, storageInit))) return TRUE -- return false impede o jogador de dar logout end Obrigado pela atenção, Já ia esquecendo, tem que adicionar na sua database em MYSQl, o seguinte query: ALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Mude a palavra frags, para o nome da ultima coluna da sua table players. Se Possível +REP -GstavoLiber -
Pessoal alguém teria um sistema que dê para ver o depot do player? por favor (REP+++)
-
Olá Homo-Sapiens. Resolvi trazer para vocês esse sistema de Quest que eu criei para resolver alguns inconvenientes em meu ot serv. Quais são as características dele? Ele é totalmente inserido através do mapper sem precisar criar scripts. Ele contém um sistema de parâmetros que podem ser usados para determinar a quem pode receber o prêmio. Ele não usa marcação por storage evitando assim conflitos com outros scripts que usam storage como marcação. Com esse sistema inserido vocês podem criar quest por vocação única, promovidos, mages ou kinas/palas. Como ela pode usar os items dentro do baú como items obtiveis de quest, ela aceita qualquer tipo de item inserido, mesmo keys e runas. Implementação Em actions.xml adicione: <!-- Quests baus --> <action fromid="1740" toid="1741" event="script" value="quests/quests.lua"/> <action fromid="1747" toid="1749" event="script" value="quests/quests.lua"/> <action fromid="1410" toid="1420" event="script" value="quests/quests.lua"/> <action actionid="2000" event="script" value="quests/quests.lua"/> Agora em scripts/quests crie ou modifique seu quests.lua para esse: --[[ autor = Marcryzius data = segunda-feira, 28 de Dezembro de 2015 >> Alguns parametros de uso. item.uid = itemid << id do item que será ganho - caso o item esteja 'inside' no baú, não se faz nescessario usar o id do item na uid - para habilitar o bau com os items como sendo uma quest se faz necessario acrescentar uma AID. actionid = validação << o baú só será usado na forma de quest se tiver alguma aid. pode usar marcação de vocação como na instrução abaixo ou setar aid 2000 para validar o baú como uma quest. actionid = quantidade << desde que ela seja maior que 100 e menor que 200 (150 = 50 items, 200 = 100 items) actionid = vocação << o primeiro numero diz que é uma quest de vocação; o segundo habilita que, as vocações promovidas também podem fazer a quest; os dois ultimos numero é da vocação em questão. exemplo 1 = 1201 << sorceres e master sorceres -- promovidos exemplo 2 = 1200 << kina e EK -- promovidos exemplo 3 = 1102 << apenas druids e não elder druids -- vocação especifica exemplo 4 = 1000 << apenas knights e paladins. exemplo 5 = 1100 << apenas sorcerers e druids. inside = varios items << todos os items que forem colocados dentro do bau será usado como referencia do premio da quest; pode-se tambem usar aid para determinar a vocação nescessaria dessa quest. -- ### -- Com o uso da nova função, não está mais sendo "setado" no player a store da "quest" usando setPlayerStorageValue(). ]] function onUse(cid,item,pos) if(item.actionid >= 1000 and item.actionid < 3000)then if(item.actionid == 1000 and not(isPaladin(cid) or isKnight(cid)))then -- somente kina ou pala recebem o item return true,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") elseif(item.actionid-1000 == 100 and not(isSorcerer(cid) or isDruid(cid)))then -- somente mages recebem o item return true,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") elseif(item.actionid-1000 > 0 and item.actionid-1000 < 100 and not(getPlayerVocation(cid) == item.actionid-1000))then -- vocação especifica - kina pala. return true,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") elseif(item.actionid-1000 > 100 and item.actionid-1000 < 200 and not(getPlayerVocation(cid) == item.actionid-1100))then -- vocação especifica - mages. return true,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") elseif(item.actionid-1000 >= 200 and item.actionid-1000 < 300 and not(getPlayerVocation(cid) % 4 == item.actionid-1200))then -- vocações promovidas. return true,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") end elseif(item.uid > 12000 and item.actionid == 0)then -- um baú qualquer return false -- abre o baú para pegarem os items 'inside' sem marcar nada, como se fosse abrir um baú qualquer sem ser de quest. end local quests_quant = (item.actionid-100 < 1) and 1 or (item.actionid-100 > 100) and 100 or item.actionid-100--Defini a quantidade de items. local playerCap,cap = getPlayerFreeCap(cid),getItemWeightById(item.uid,quests_quant) or 0 if(item.uid > 1000 and cap > 0)then -- quest por uid if(getSaveQuestsInfor(item.uid,cid))then --Função não usa marcação (getPlayerStore...) if(playerCap >= cap)then if(item.uid == 2493)then setPlayerStorageValue(cid,2493,1) end -- compatibilidade, verificar uso > ???...D:::H...??? doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a '..((quests_quant == 1) and '' or quests_quant)..' '..getItemNameById(item.uid)..'.') saveQuestsInfor(item.uid,getItemNameById(item.uid),cid,"Quest system by uid.") doPlayerAddItemEx(cid,doCreateItemEx(item.uid, quests_quant),true) else return false,doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a '..(quests_quant == 1 and '' or quests_quant)..' '..getItemNameById(item.uid)..' weighing '..math.floor(cap)..' oz it\'s too heavy.') end else--caso o player já tenha feito a quest, abri-se o baú de forma convencional, podendo obter os items que estejam dentro dele. return false end return true end local size,texto,rewards,peso = isContainer(item.uid) and getContainerSize(item.uid) or 0,'You have found a ',{},0 if(size > 0)then for i = size,0,-1 do local tmp = getContainerItem(item.uid, i) if(tmp.itemid > 0) then if(isItemContainer(tmp.itemid))then -- só é possível adicionar mais um inside. ou seja, uma bolsa com algo dentro desde que não tenha outra bolsa com mais coisas dentro, dentro dessa bolsa primária. table.insert(rewards,1,{[tmp.itemid] = {}}) texto = texto..' a '..getItemNameById(tmp.itemid)..''..(i+1<size and ',' or '.') for insize = getContainerSize(tmp.uid),0,-1 do local newtmp = getContainerItem(tmp.uid, insize) table.insert(rewards[1][tmp.itemid],{id=newtmp.itemid, val=(newtmp.actionid > 0 and newtmp.actionid or newtmp.type)}) end else --Foi feito dessa forma para não haver conflito com items do mesmo tipo. table.insert(rewards,{[tmp.itemid]=(tmp.actionid > 0 and tmp.actionid or tmp.type)}) if(tmp.type > 0)then texto = texto..' '..(tmp.type > 0 and tmp.type..' charges of ' or 1)..' '..getItemNameById(tmp.itemid)..''..(i+1<size and ',' or '.') elseif(tmp.actionid > 0)then texto = texto..' '..(tmp.type > 0 and tmp.type..' charges of ' or 1)..' '..getItemNameById(tmp.itemid)..''..(i+1<size and ',' or '.') else texto = texto..' '..getItemNameById(tmp.itemid)..''..(i+1<size and ',' or '.') end end peso = peso + getItemWeight(tmp.uid) end end if(getSaveQuestsInfor(tonumber(pos.x..''..pos.y..''..pos.z),cid))then --Função não usa marcação (getStore...)) if(playerCap >= peso)then for _,reward in pairs(rewards) do for item,valor in pairs(reward) do if(type(valor) == "table")then local bag = doCreateItemEx(item) for _,value in pairs(valor) do if(value and value.id > 0)then doAddContainerItemEx(bag,doCreateItemEx(value.id,(value.val<=0 and 1 or value.val))) end end doPlayerAddItemEx(cid,bag,true) elseif(isInArray(KEYS_DOOR,item))then -- se o item for uma key local ch = doCreateItemEx(item,1) doItemSetAttribute(ch,'aid',valor) doPlayerAddItemEx(cid,ch) else doPlayerAddItemEx(cid,doCreateItemEx(item, valor),true) end end end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, texto) saveQuestsInfor(tonumber((pos.x)..''..(pos.y)..''..(pos.z)),getItemNameById(table.maxn(rewards)),cid,"Quest system by Inside.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, texto..' weighing '..math.floor(peso)..' oz it\'s too heavy.' ) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") end else return false, doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.") end return true end Em lib/050-functions.lua adicione: function getSaveQuestsInfor(uid,cid) --[[( Marcryzius )]]-- local str = false if not(db.executeQuery("SELECT * FROM `server_quests`;"))then -- caso a table não exista, será criada db.executeQuery("CREATE TABLE `server_quests` (`uid` INTEGER, `name` VARCHAR(255), `name_player` VARCHAR(255), `pos` VARCHAR(255), `other` TEXT);") return getSaveQuestsInfor(uid,cid) end if(tonumber(uid))then str = db.getResult("SELECT * FROM `server_quests` WHERE `uid` = '"..uid.."' AND `name_player` = ".. db.escapeString(getCreatureName(cid))..";") elseif(type(uid) == 'string')then str = db.getResult("SELECT * FROM `server_quests` WHERE `name_player` = " ..db.escapeString(getCreatureName(cid)).. " AND `name` = '"..uid.."';") else return false,print('getSaveQuestInfor: tipo de uid invalido > '..tostring(type(uid))) end return (str:getID() == -1) and true or false end function saveQuestsInfor(uid,name,cid,other) --[[( Marcryzius )]]-- --[[ uid = Item.uid usado no bau(entre outros) para receber o item da Quest name = nome do item dado ao player ou nome da quest cid = identificacao do player other = informacoes adicionais para serem salvas junto a quest ]]-- if not(db.executeQuery("SELECT * FROM `server_quests`;"))then -- caso a table não exista, será criada db.executeQuery("CREATE TABLE `server_quests` (`uid` INTEGER, `name` VARCHAR(255), `name_player` VARCHAR(255), `pos` VARCHAR(255), `other` TEXT);") end -- caso o parametro uid seja numero, pega-se a posição do item ou, caso não, pega-se a posição do player. local other,pos2 = other or '','' local pos = type(uid) == 'number' and getThingPos(uid) or getCreaturePosition(cid) pos2 = 'x='..pos.x..', y='..pos.y..', z='..pos.z -- verifica se tudo está correto. if not(type(name) == 'string') or not(tonumber(cid))then return false, print('Funcao requer parametros: name,cid') end -- salva as informações na database. db.executeQuery("INSERT INTO `server_quests` (`uid`, `name`, `name_player`,`pos`,`other`) VALUES ("..(uid or tonumber(pos.x..''..pos.y..''..pos.z))..",'"..name.."', '"..getCreatureName(cid).."','"..pos2.."','"..other.."');") return true end Exemplos de uso do sistema Quest na qual dá o prêmio de 100 gps: Quest na qual dá o prêmio apenas para knights (e não para EKs e outras promoções de knight): Quest na qual dá o prêmio apenas para paladins e suas promotions: Ressalva: Caso queira fazer para knights use o id 0 (zero) e não 4 (quatro). Quest na qual dá o prêmio apenas para todos: Nesse caso você pode usar AID 0 (zero) ou AID (2000). Caso usem o metodo 'inside' de items no baú pode-se também usar esses mesmos parâmetros para estabelecer a quem pode ganhar os items inseridos no baú. Lembre-se que em quests 'insides' não se usa UID, mantenha ela em 0 (zero): Utilizando o metodo 'inside' ela só se tornará uma quest caso tenha alguma AID para válidar como quest. Então para fazer uma validação na qual qualquer player possa obter os itens 'inside' como sendo uma quest, adicione a AID 2000 ao baú: Bem, é isso pessoal. Para finalizar, aqui vai uma crítica ao xtibia. MELHOREM ESSE SISTEMA DE EDIÇÃO DE TEXTO.
-
Boa tarde, vim fazer um pedido pra quem puder me ajudar, a colocar um sistema de gender tipico do otpokemon.. Como é o sistema? Os pokemons summon e dos player que for do [SEXO MALE] ficar com o nome com a cor azul Os pokemons summon e dos player que for do [SEXO FEMALE] ficar com o nome com cor rosa Caso não puder ajudar, se puder falar onde fica esse tipo de sistema, irei atrás de bases com esse sistema e tentar pega-los.. Obrigado a todos ❤️
-
Boa noite povo do xTibia vim fazer pedido sobre o Level System, queria saber se alguém poderia me ajudar a adicionar Level System básico Como seria esse Level system básico? Fica mostrando level nos Pokémons summon e nos próprios pokémons do jogadores Ele fica ganhando XP a cada pokémon matado e fica mostrando no chat quantos xp ganhou e quantos precisa pra subir de nível Assim que upa de nível apareça tipo uma mensagem falando q o povo subir de nível e qual foi o nível [Obs : se puder colocar pra cada vez q upa o nível adicionar uma % de vida ou força] Agradeço pela atenção, quem puder ou não puder ajuda não tem problema, Obrigado a todos pela atenção.
-
Olá, estou contratando algum programador que consiga fazer o sistema e a module do PVP DO GLA. Que não seja caro, crise tá foda, rs. Bom o sistema é simples, porém a module no OTC é muito bonita e bem feita. Basicamente o sistema funciona assim: Você clica em uma aba no Cliente e abre a module onde aparece Player vs Player & Torneio. Eu por enquanto só quero a parte Player vs Player. Na parte de player vs player aparece um ranking ordenado por quem tem mais vitórias, e aparece suas derrotas e seu winrate. Para buscar partida precisaria clicar em "Buscar por grupo" onde iniciaria um Matchmaking com outras pessoas que estavam na fila. Ao encontrar outro jogador os 2 players seriam levado para uma arena livre e começariam o Duelo até 1 morrer. Quando 1 player conseguir vencer o outro vai aparecer Victory na tela assim: E também iria aparecer uma mensagem para todos do jogo assim: Como vocês perceberam há um contador de tempo mas para mim não é necessário. Lembrando meu servidor ainda não comecei, ou seja não tenho base nenhuma ainda, e isso é para um servidor de poketibia, então se vocês se sentirem mais a vontade com certa base para fazer o sistema sintam-se a vontade e eu utilizarei essa base.
- 2 replies
-
- freelancer
- compro
-
(and 1 more)
Tagged with:
-
Gostaria de saber o script (acho q e isso ) Das auras system (Que vem quando o pokemon e capturado na premier ball, ou quando o pokemon fica com boost +50 (essas auras podem mudar de cor com um comando sen me engano )) Segue as prints dessas auras: Obs Se tiver na área errada, sorry
- 28 replies
-
- pxgaura system
- system
-
(and 4 more)
Tagged with:
-
Fala galera, depois de anos sem produzir nada venho mostrar um pouco do sistema que estou desenvolvendo para um amigo. Paper Doll System Nada mais é do que, equipar um item e ele aparecer no outfit do player. E nos monstros Por enquanto é isso pessoal, conforme eu atualizar o código eu mostro para vocês...
- 12 replies
-
- paper doll
- system
-
(and 1 more)
Tagged with:
-
O script consiste em quando você der look no player irá aparecer se ele é VIP ou FREE e quantas pessoas ele já matou (frags). SS: lookplayer.lua (data/creaturescripts/scripts) function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } return size.day + size.week + size.month end function onLook(cid, thing, position, lookDistance) local string = 'You see yourself.' if isPlayer(thing.uid) and thing.uid ~= cid then if getPlayerPremiumDays(thing.uid) > 0 then doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..'][VIP]') else doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..'][FREE]') end elseif thing.uid == cid then if getPlayerPremiumDays(cid) > 0 then doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..'][VIP]') else doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..'][FREE]') end if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end string = string..getPlayerSpecialDescription(cid)..'' if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.' end if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end creaturescripts.xml <event type="look" name="LookPlayer" event="script" value="lookplayer.lua"/> login.lua (data/creaturescripts) registerCreatureEvent(cid, "LookPlayer") Créditos: Taag - Suicide
-
Killua Task Sytem Versões testadas: tfs 0.3.6 e 0.4 Eu sei que já existem vários task systems, inclusive aqui no fórum, mas do jeitinho que eu queria, não consegui achar nenhum. Por isso, resolvi fazer um eu mesmo. O que ele tem de diferente? • É totalmente simplificado. • Não precisa "pegar" as tasks. Elas já são todas automáticas, ou seja, os monstros são contados desde sempre. • É tudo configurado em uma única tabela, de forma muito simples. • Tem um NPC que somente entra as recompensas. • Seu progresso pode ser visto pelo comando !task Atualização do sistema: Refiz os códigos pois existia uma possibilidade de bug. Otimizei eles, deixando o código mais limpo, eficiente e rápido. Aconselho a todos que usam o sistema que instalem a nova versão. Instalação: Tags: Em talkacions.xml adicione: <talkaction log="yes" words="!task" event="script" value="amoebaTask.lua"/> Em creaturescripts.xml adicione: <event type="kill" name="AmoebaTask" event="script" value="amoebaTaskCreature.lua"/> Em data/creaturescritps/scripts/login.lua adicione: registerCreatureEvent(cid, "AmoebaTask") Scripts: Lib: Crie amoebaTask.lua em data/lib e coloque Talkaction: Crie amoebaTask.lua em data/talkactions/scripts e coloque Creaturescripts: Crie amoebaTaskCreature.lua em data/creaturescripts/scripts e coloque NPC: Em data/npc crie Task Man.xml e coloque Configuração: A configuração é feita unicamente na tabela da lib: amoebaTask = { ["Jabuti"] = {creatures = {"Jabuti","Jabuti Hatchling"}, storage = 2312112, storagecount = 890120, count = 300, exp = 0, money = 0, premios = {{6527, 10},{10133, 1}}}, ["Thenebreus"] = {creatures = {"Thenebreus"}, storage = 2312113, storagecount = 890121, count = 250, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}}, ["Demon"] = {creatures = {"Demon"}, storage = 2312114, storagecount = 890122, count = 5, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}} } Em [""] vc coloca o nome que vai aparecer no !task e que também será usado para pega a recompensa no NPC. Em creatures vc coloca todos os monstros que vão contabilizar para tal task. Em storage vc coloca o storage de task completa, que garante que o premio só será pego uma vez. Esse storage nunca pode ser repetido! Em storagecount vc coloca o storage de contagem de monstros. Esse também nunca pode ser repetido! Em count vc coloca o número de monstros necessários pra completar a task. Em exp vc coloca a exp que ganha completando. Em money vc coloca o dinheiro que ganha completando. Em premios vc coloca os itens que ganham completando, seguido de sua quantidade. Ex: {6527, 4} o player vai receber 4 itens de id 6527. Espero que façam bom uso do sistema. Vou ficar feliz em atender qualquer tipo de dúvida e também aceito sugestões. Caso queira que as tasks possam ser feitas repetidas vezes, me peça que eu ponho aqui. Pois basta mudar duas linhas.
-
Olá galera do Xtibia Beleza?? Saco cheio da minha presença eu sei!! APSOAKS Gostaria de fazer um pedido hoje!! Estou com um projeto para lançar , claro , como todo projeto em fase de lançamento , e normal encontrar barreiras , erros , etc... Mas creio que meu erro e bem simples e ao mesmo tempo dificil de ser resolvido , como não manjo de WebSite... Gostaria de um Shop System que funcione com o meu Morden , pois pesquisei por diversos sites , fiz oque os tutoriais ensinava e nem um funcionou , então quem poder ajudar agradeço!!!
-
Gostaria de saber o script (acho q e isso ) Das auras system (Que vem quando o pokemon e capturado na premier ball, ou quando o pokemon fica com boost +50 (essas auras podem mudar de cor com um comando sen me engano )) Segue as prints dessas auras: Obs Se tiver na área errada, sorry (JA POSTEI NUMA ÁREA, MAS PELO VISTO, NENHUMA RESPOSTA COM A SCRIPT )
-
Iae pessoal do Xtibia. Queria saber como fazer um sistema de points, que o player quando compra points ele pode ir até um chest que tem o item "x" e compra o item. Ex.: O player "Manolo" foi até o sala de itens, e quis comprar o item "Wand Vip" a wand custa 30 points, e o player "Manolo" tem 40, ai ele abria o chest, ganhava o item. Depois que ele comprasse o item os points fossem para 10. Se ele não tiver points necessário apararece-se assim " Voce nao tem itens suficientes". E quando ele falasse, !points. Aparece o tanto de points que ele tem. Valew
-
Eu criei esse sistema de look at attack porquê eu acho ridículo quando o character fica atacando o oponente sem estar "olhando" para ele. O que ele faz? Ele volta o character que esteja atacando um oponente para o oponente. Ele não impede de andar ou de mudar de direção, porém ele vai ficar mantendo a direção voltada ao oponente. Vamos adicionar o sistema. Em: creaturescript/creaturescript.xml, adicione essa tag: Agora em: creaturescript/scripts, crie um arquivo lua e adicione isso: Dentro do mesmo diretório, abra o arquivo login.lua e adicione isso a ele onde existe outros semelhantes. Pronto. Instalado o seus sistema de look at attack. Agora quando o player atacar algum oponente, ele ficará "olhando" para ele.
-
Olá pessoal, achei um servidor em um fórum gringo de Tibia que continha este mod embutido no Client Não sei as configurações exatas do sistema mas vou posta-lo aqui caso saibam configurar... Arquivo.lua= Créditos: OtLand Shawak Slicer
- 2 replies
-
- sound system
- som
-
(and 3 more)
Tagged with:
-
Olá Camaradagem do XTibia. Venho disponibilizar um sistema muito útil para servidores fiéis ao Tibia(CipSoft). Ele consiste em não atacar membros da party, ótimo para quest, pvp e hunt's. Não posso afirmar se funcionará em todos os servidores, testado somente em 10.1. config.lua noDamageToPartyMembers = true data/creaturescripts/creaturescripts.xml <event type="combat" name="partyAndGuildProtection" event="script" value="partyAndGuildProtection.lua"/> data/creaturescripts/scripts/partyAndGuildProtection.lua function onCombat(cid, target) if(isInParty(target)) then if(getConfigValue("noDamageToPartyMembers")) then if(isInParty(cid)) then return false end end end return true end data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "partyAndGuildProtection") Créditos ao Global 10.1 por conter partyAndGuildProtection.lua, porém contia bugs e não atacava nem player. Créditos a mim por fixar esse problema e disponibilizar. partyAndGuildProtection.lua bugado do servidor.
-
Olá xtibia e todo os usúarios, por meio desse topico resolvi criar um tutorial como ADICIONAR icon system ao servidor, sem desloga vamos lá? Servidor usado para adicionar icon system http://www.xtibia.com/forum/topic/201018-pxo-server-11-by-smix/ Bom.. como o server dele já vem istalado o systema de icon system fica até mais facil, vamos lá? logo apoís abaixa-lo o servidor vamo ao primeiro passo para adicionar icon. 1* irei usar como TESTE 3 IDS do item.otb 13590,13591 e 13592. Bom o ID 13590 sera usado como 'On' Icone On.(Icone Vivo). o ID 13591 sera usado como icone OFF/icone morto. e o ID 13592 sera usado como USÊ/Icone sendo usado. agora vamos lá nas modificações dos scripts? Action configurações. Agora vamos para a parte de LIB. Mais tome muito atenção aqui, porque tem que faze bem certinho se não bugara muitas coisas. Lib configurações. agora vamos as configurações no movements. Movements configurações. Agora vamos ao item.xml
-
Já que tô de bobeira nessa madrugada, não custa nada refazer uns sistemas né. O sistema consiste em não permitir o uso do Magebomb ou fazer (o famoso) MC. antimagemc.lua (data/creaturescripts/scripts) Creaturescripts.xml (data/creaturescripts) <event type="login" name=antimagemc" event="script" value="antimagemc.lua"/> PS: Tirei os acentos do script para evitar futuros bugs. PS²: Eu tirei o script de um fórum gringo e reformulei. Créditos: Gringo desconhecido.
-
Alguém poderia me ajudar resolver o problema do meu ginasio? Meu script esta configurado com as seguintes mensagens Sabrina: Hello G U M B A L L, my name is Sabrina and I'm Saffron's Gym Leader. How may I help you? 12:48 G U M B A L L: battle 12:48 Sabrina: To battle agains't a gym leader you need pokemons. ja tentei falar com ela com o pokémon pra fora mas não funciona,ela não faz nada SE PUDEREM ME AJUDAR DOU REP
-
Isso não é inédito em OTS, mas fiz o meu sistema de Caçador de Recompensa (Bounty Hunter) 1. Informações sobre o sistema Sistema de pontos por recompensa incluído (configurável) Rank de maiores caçadores Rank de maiores recompensas Lista de jogadores com recompensa online 2. Funcionamento Você fala com o NPC, que oferece várias opções Você pode colocar uma recompensa para a morte de alguém (post), pegar seu dinheiro por caçar alguém (reward), checar as maiores recompensas (most wanted), checar seus pontos de caçador (points) ou obter informações gerais sobre o funcionamento (information) Para colocar uma recompensa, você deve fornecer um nome. Se esse jogador existir, você deverá oferecer um valor (mínimo configurável). Depois, desse valor será descontada a taxa da guilda dos assassinos (configurável). Se você tiver esse dinheiro, ele será removido e o nome dessa pessoa estará na lista de procurados, para que o jogador que a matar (não funciona para o jogador que colocou a recompensa) ganhe a recompensa devida Quando um jogador mata outro procurado, ele é avisado de que ganhou a recompensa e os pontos (se estiver ativado). Para pegar a recompensa, ele deve falar com o NPC Para saber quais jogadores procurados estão online e quais são suas recompensas, foi adicionado um quadro especial que lista esses jogadores, assim como um outro quadro que lista os maiores caçadores do servidor 3. Códigos 3.1. Tags Creaturescripts.xml: <event type="kill" name="bountykill" event="script" value="bountykill.lua"/> <event type="look" name="bountyboard" event="script" value="bountyboard.lua"/> talkactions.xml: <talkaction words="/installbounty" access="5" event="script" value="bountyinstall.lua"/> 3.2. NPC Crie um arquivo: npcs/Tyrion.xml 3.3. Códigos lua Adicionar em creaturescripts/login.lua, junto com os demais registerCreatureEvent registerCreatureEvent(cid, "bountyboard") registerCreatureEvent(cid, "bountykill") lib/bountylib.lua creaturescripts/scripts/bountykill.lua creaturescripts/scripts/bountyboard.lua npcs/scripts/assguild.lua talkactions/scripts/bountyinstall.lua 4. Configuração / Instalação Você deve usar o comando /installbounty pelo GOD para que o sistema adicione a coluna necessária no seu banco de dados As configurações disponíveis estão no bountylib.lua O sistema de pontos apenas adiciona e conta os pontos. Cabe a sua imaginação/habilidade fazer algo a partir deles Para adicionar o rank de melhores caçadores e a lista de procurados online, você deve criar dois itens (eu recomendo o quadro negro - id 1810, por exemplo) e colocar os actionids 3550 e 3551. Assim, quando alguém der look, aparecerão as respectivas listas [óbvio] O sistema depende de que você adicione o NPC no mapa [/óbvio] 5. Bugs Apesar de ter testado bastante, ainda há espaço para alguns bugs. Caso você os encontre, por favor poste DETALHADAMENTE qual é o erro para que eu possa consertar 6. Considerações Finais Espero críticas/sugestões/elogios sobre o código e seu funcionamento
- 13 replies
-
- bountyhunter
- system
-
(and 4 more)
Tagged with:
-
Olá a todos, venho aqui mostrar um novo projeto que estou desenvolvendo com alguns sistemas Trata-se de um Projeto RPG Survival/Adventurer, onde o seu esforço será necessário para progredir, O servidor conta com um sistema de SOM feito e disponibilizado para todos pelo vyctor17, apenas peguei o sistema e modifiquei algumas linhas e funções, o projeto ainda está no começo, meu objetivo é tornar o jogo inteiro com som e com RPG, fazendo assim quests que serão fundamentais com som, exemplo: audios pelas cavernas avisando perigo sobre algum boss ou algo do tipo Aqui está um video de como estão ficando as coisas, só mostrei o basico, ainda irei fazer sistemas de interações com o cenario, no qual magias destruirão o cenario ou modificarão, será um jogo totalmente personalizado por dentro pelos jogadores. Antes que me perguntem! Sim, será possivel desativar o som, afinal nem todo mundo é acostumado a jogar tibia com som hahaha Terá opções de desativar partes do som Exemplo: Desativar sómente som dos items, só do ambiente, das criaturas, das magias, etc. E antes que perguntem, terão sons individuais, que só o propio jogador escutará e terão sons coletivos, que todos na tela escutarão. É um projeto que começou faz 3 dias Atualizações 26/04/2017 - Foi retirado o Livro de Skills do jogo e adicionado no própio cliente, basta apertar CTRL + A e uma janela informando os atributos será aberta. 27/04/2017 - Sistema de pesca e um pouco do ambiente do jogo.
- 9 replies
-
- rpg
- adventurer
-
(and 5 more)
Tagged with: