-
Total de itens
190 -
Registro em
-
Última visita
-
Dias Ganhos
1
Posts postados por fokus090
-
-
@Slicer
Tranquilo!, Tudo na Paz!
@Topic
Manifeste-se caso sua Dúvida/Pedido tenha sido atendida!
-
/\
mano ja testase oq eu coloquei ali? pois eu ja testei.. se algum item tem o atributo 'unique' ele n podera ser movido, trocado e nem nd do tpw.. u,U
e isso n ta certo..
[12578, 12579, 12580]
eh bom passar pelo menos um debugger antes de postar.. ;/
edit:
sinceramente, teu script n faz o menor sentido...
Nossa que Mal Humor! Sinto muito pelo meu comentário infeliz. Não foi minha intenção.
E com respeito ao que coloquei aí em cima, LINK!
-
Fiz um aqui mas não testei. Espero que dê certo!
OBS: Criei o NPC ou qualquer outra coisa aí pra dar a Quest. Dê á Storage 45698, 0.
function onDeath(cid, corpse, killer) local monstName = "Dragon" -- Nome do monstro local Storage = 45698 local Monster = "Dragon Lord" -- Nome do Monstro que será Summonado local pos = getPlayerPosition(cid) if isMonster(cid) then if string.lower(getCreatureName(cid)) == string.lower(monstName) then if getPlayerStorageValue(cid, Storage) < 100 then setPlayerStorageValue(killer[1], Storage, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Dragon Morto: " .. getPlayerStorageValue(cid, Storage) .. "/100") if getPlayerStorageValue(cid, Storage) == 100 then doCreateMonster(Monster, pos) setPlayerStorageValue(cid, Storage, -100) end end end end return TRUE end
-
local item = doPlayerAddItem(cid, 1111, 1)
doSetItemAttribute(item, "unique", cid)
Apesar dele ter usado á palavra "unique", acredito que não seja isso que ele se referiu.
Tenta isso :.
crie um arquivo item.lua em movements/scripts e adicione isso:
local uniqueitems = [12578, 12579, 12580] function onDeEquip(cid, item) if item.itemid == uniqueitems then doPlayerSendCancel(cid, "Sorry, this is an unique item.") end end
tag: <movevent type="DeEquip" itemid="12578,12579,12580 " event="script" value="item.lua"/>
Depois na mesma pasta crie trade.lua e adicione:
function onTradeAccept(cid, target, item, targetItem) if item.itemid == 2578 or targetItem.itemid == 12579 or targetItem.itemid == 12580 then doPlayerSendCancel(cid, "Sorry, you cannot trade this item.") end end
tag: <movevent type="tradeaccept" itemid="12578,12579,12580" event="script" value="trade.lua"/>
#OutraPossibilidade
1º Baixe o OtItemEditor' (Ot Item Editor)
2º Basta abrir o OtItemEditor'
3º Clique e "File" e logo após clique em "Open"...
4º Procure o arquivo "items.otb" na pasta do seu OTserver' (geralmente em "data / items / items.otb")...
5º Como já sabe a ID do item que quer editar... procure-o no Item Editor...
6º E tire a opções "Moveable" e "Pickupable" que provavelmente estará selecionada'
7º Salve e pronto'
Tente e Boa Sorte!
-
NPC.xml
<?xml version="1.0"?> <npc name="NomeDoNPC" script="data/npc/scripts/NomeDoArquivoLua.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/> <parameters> <parameter key="message_greet" value="Olá jovem, bem vindo a Town's Ville. Eu posso estar lhe ajudando dando {informações} sobre o {mapa}." /> </parameters> </npc>
NPC/Script
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 thinkCallback(cid) local rand = math.random(1,50) if rand == 1 then selfSay('Posso lhe conceber ajuda sobre todas as mudanças que houveram na cidade de Towns Ville...') elseif rand == 2 then selfSay('Precisa de ajuda em encontrar algum lugar de Towns Ville? Pergunte-me!') elseif rand == 3 then selfSay('É a sua primeira vez aqui? Eu posso lhe ofereçer ajuda...') end return true end function greetCallback(cid) return true end local shopModule = ShopModule:new() npcHandler:addModule(shopModule) if(msgcontains(msg, 'Informações') then selfSay('Atualmente, posso lhe dizer tudo sobre a cidade, seu {templo}, o {banco}, {lojas}, {locais de magias}, o {deposito} ({dp}), e um pouco sobre os {bairros}.', cid) talkState[talkUser] = 1 ------------------------------------------------------------------------------------------------------------------------------------------------------- elseif(msgcontains(msg, 'templo') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {Templo} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'banco') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {Banco} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'lojas') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {Lojas} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'locais de magias') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {locais de magia} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'deposito') or msgcontains(msg, 'dp') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {Deposito} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'bairros') and talkState[talkUser] == 1) then selfSay('Edite a Informação sobre o {Bairros} Aqui!') talkState[talkUser] = 0 elseif(msgcontains(msg, 'mapa')) then selfSay('Bom, eu posso deixar marcas no seu mapa, mostrando assim, onde fica os principais locais... Você gostaria que eu fizesse isso?') talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then selfSay('Ok! Marquei os principais lugares em seu mapa... Caso ainda tenha dúvidas me pergunte!') doPlayerAddMapMark(cid, {x=000, y=000, z=0,}, NumeroDaMarcação, 'Templo') doPlayerAddMapMark(cid, {x=000, y=000, z=0,}, NumeroDaMarcação, 'Banco') doPlayerAddMapMark(cid, {x=000, y=000, z=0,}, NumeroDaMarcação, 'Lojas') talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and talkState[talkUser] == 2) then selfSay('Então, já conhece o mapa... Procure-me quando precisar de ajuda!') talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new())
Não Testei, espero que funcione!
Abraços !!
-
for é bem mais simples de trabalhar. Sempre utilizo ele. Mas foi um bom Tutor.
Parabéns!
-
Pedido Atendido. Reportado para Moverem!
Abraços !
-
Reportado para Moverem!
Abraços !!
-
isso n vai funcionar.. o sistema de clan n tem nd a ver com o sistema de vocaçao do tibia.. ;/
Sendo assim, desculpe pelo meu ERRO FATAL. Não conheço muito bem OTservs PokeTibia. Queria ajudar mais fiquei um pouco perdido.
Abraços !!
-
e como fica todos os players que já passaram do 150 ou 200?
Você tem razão, shausHSUhsuH. Eu esqueci desse detalhe. Mas para resolver isso, basta criar um Script de Login.
-- < Script by Frenesy > -- function onLogin(cid) local Name = "Account Manager" local Storage = 10010 local Nivel = 150 if (getCreatureName(cid) ~= Name) then if getPlayerStorageValue(cid, Storage) == -1 then if getPlayerLevel(cid) >= Nivel and getPlayerLevel(cid) <= 199 then doPlayerSendTextMessage(cid, 22, "Você recebeu 5 dias de Premium.") doPlayerAddPremiumDays(cid, 5) setPlayerStorageValue(cid, Storage, 1) end end end return true end
-- < Script by Frenesy > -- function onLogin(cid) local Name = "Account Manager" local Storage = 10011 local Nivel = 200 if (getCreatureName(cid) ~= Name) then if getPlayerStorageValue(cid, Storage) == -1 then if getPlayerLevel(cid) >= Nivel then doPlayerSendTextMessage(cid, 22, "Você recebeu uma Montaria.") doPlayerAddMount(cid, ID_DA_MONTARIA) setPlayerStorageValue(cid, Storage, 1) end end end return true end
TAG:.
<event type="login" name="Premium" event="script" value="NomeDoArquivo.lua"/> <event type="login" name="Montaria" event="script" value="NomeDoArquivo.lua"/>
Login.lua :.
registerCreatureEvent(cid, 'Premium') registerCreatureEvent(cid, 'Montaria')
-
mais vc sabe como eu colo para o pk do player demora 10 min pra sair!
pq minha prisao! a saida dela é 1 porta com area pz! e o player fika preso por causa do pk! mai o pk sai muito rapido coisa de 1 min!
Isso é no Config.lua amigo.
whiteSkullTime = 10 * 60 * 1000
-
Postarei as imagens.
Viu só? Funcionou!
-
Fiz por CreatureScript. Achei que ficaria melhor.
function onAdvance(cid, skill, oldLevel, newLevel) registerCreatureEvent(cid, "UpLevel") local new_level = 150 if skill == 8 then if (oldLevel < new_level ) and (newLevel >= new_level) and getPlayerStorageValue(cid, 10010) < 1 then doPlayerSendTextMessage(cid, 22, "Você recebeu 5 dias de Premium.") doPlayerAddPremiumDays(cid, 5) setPlayerStorageValue(cid, 10010, 1) end end return TRUE end
function onAdvance(cid, skill, oldLevel, newLevel) registerCreatureEvent(cid, "UpLevel0") local new_level = 200 local montaria = ID_DA_MONTARIA if skill == 8 then if (oldLevel < new_level ) and (newLevel >= new_level) and getPlayerStorageValue(cid, 10011) < 1 then doPlayerSendTextMessage(cid, 22, "Você recebeu uma Montaria.") doPlayerAddMount(cid, montaria) setPlayerStorageValue(cid, 10011, 1) end end return TRUE end
TAG :.
<event type="Advance" name="UpLevel" script="NomeDoArquivo.lua"/> <event type="Advance" name="UpLevel0" script="NomeDoArquivo.lua"/>
Em Login.lua adicione isso :.
registerCreatureEvent(cid, 'UpLevel') registerCreatureEvent(cid, 'UpLevel0')
-
-
Tag da Action.xml :.
<action uniqueid="7200" event="script" value="NomeDoArquivo.lua" />
function onUse(cid, item, frompos, item2, topos) --================ Vocation 1 =================-- PlayerPosF = {x=504, y=497, z=5, stackpos=253} --== Posição de onde a Vocação 1 Deve ficar. PlayerTileF = getThingFromPos(PlayerPosF) --== Verifica o Jogador no Tile da Vocation 1. PlayerTPF = {x=504, y=501, z=5} --== Posição final para onde o Jogador irá. --================ Vocation 2 =================-- PlayerPosG = {x=506, y=497, z=5, stackpos=253} --== Posição de onde a Vocação 2 Deve ficar. PlayerTileG = getThingFromPos(PlayerPosG) --== Verifica o Jogador no Tile da Vocation 2. PlayerTPG = {x=506, y=501, z=5} --== Posição final para onde o Jogador irá. if item.uid == 7200 and item.itemid == 1945 then --== Alavanca ID 1945 com UniqueID 7200. if PlayerTileF.itemid > 0 and PlayerTileG.itemid > 0 then --== Verifica se Todos os Jogadores estão nos seus Devidos Tiles. PlayerVocF = getPlayerVocation(getTopCreature(PlayerPosF).uid) --== Verifica a Vocation do Jogador no Tile da Vocation 1. PlayerVocG = getPlayerVocation(getTopCreature(PlayerPosG).uid) --== Verifica a Vocation do Jogador no Tile da Vocation 2. if PlayerVocF == 1 and PlayerVocG == 2 then --== Verifica se os Jogadores estão nos Tiles Corretos de sua Vocation. doTeleportThing(PlayerTileF.uid, PlayerTPF) --== Teleporta o Jogador da Vocation 1. doTeleportThing(PlayerTileG.uid, PlayerTPG) --== Teleporta o Jogador da Vocation 2. doSendMagicEffect(PlayerTPF, 10) --== Efeito na Nova Posição da Vocation 1. doSendMagicEffect(PlayerTPG, 10) --== Efeito na Nova Posição da Vocation 2. doTransformItem(item.uid,item.itemid+1) else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, "Algum Jogador não está no Tile de sua Vocação.") end else doPlayerSendCancel(cid, "Todos os Jogadores devem ficar nos Tiles.") end elseif item.uid == 7200 and item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) end return TRUE end
OBS [1] :. Só há duas Posições Configuradas. Basta colocar as Outras seguindo o Modelo do Script.
OBS [2] :. Testei em um Servidor 8.60. Não tenho nenhum Otserv PokeTibia no meu PC.
-
para checar se tem a promotion é só checar um storage não é?
Na verdade não é não. Há uma função específica para checar a Promotion. Mas tendo a Annihilator como base, acho que não vai ser tão difícil fazê-la.
-
PokeTibia, entendi. Não conheço muito Poketibia, por isso esse detalhe me passou despercebido.
-
Eu fiquei um pouco confuso.
Quando você disse "1 player de cada clã" eu imaginei que você estivesse falando de 'Guilds'.
Mas quando você disse "
só funciona se você for Volcanic." aí eu imaginei que fosse uma 'Vocação'.
Resolva essa Dúvida para mim.
-
Não sei se é aqui em casa, mais esse código está deformado. Não consigo entender.
-
function getRepelTiles(cid)
local tile = {
{20, 3},
{40, 4},
{50, 5},
{80, 6},
{100, 7},
{120, 8}
}
table.sort(tile, function(a, b) return a[1] > b[1] end)
for _, t in ipairs(tile) do
if(getPlayerLevel(cid) >= t[1]) then
return t[2]
end
end
return tile[1][2]
end
function getNextPos(cid, tiles)
p = getCreaturePosition(cid)
x,y,z = p.x,p.y,p.z
local places = {
[0] = {x=x, y=(y-tiles), z=z, stackpos = 253},
[1] = {x=(x+tiles), y=y, z=z, stackpos = 253},
[2] = {x=x, y=(y+tiles), z=z, stackpos = 253},
[3] = {x=(x-tiles), y=y, z=z, stackpos = 253}}
return places[getPlayerLookDir(cid)]
end
function doRepel(cid, target, tiles)
if queryTileAddThing(cid, getNextPos(cid, 2)) == RETURNVALUE_NOERROR then
doCreatureSetLookDirection(target, getCreatureLookDirection(cid))
repeat
doTeleportThing(target, getNextPos(target, 1), true)
doSendMagicEffect(getCreaturePosition(target), CONST_ME_GROUNDSHAKER)
tiles = tiles-1
until tiles == 0 or queryTileAddThing(target, getNextPos(target, 1)) ~= RETURNVALUE_NOERROR
end
end
function onCastSpell(cid, var)
targ = getThingfromPos(getNextPos(cid, 1))
if (isPlayer(targ.uid)) or (isMonster(targ.uid)) then
if queryTileAddThing(cid, getNextPos(cid, 2)) == RETURNVALUE_NOERROR then
if (isPlayer(targ.uid)) or (isMonster(targ.uid)) and getTilePzInfo(getCreaturePosition(cid)) == FALSE then
doRepel(cid, targ.uid, getRepelTiles(cid))
doCreatureAddHealth(targ.uid, -getPlayerLevel(cid))
doCreatureAddMana(cid, -10)
end
else
doPlayerSendCancel(cid, "Something is in the way to repel the target.")
end
else
doPlayerSendCancel(cid, "There is no target to repel.")
end
end
-
-
Mais uma vez fique barrado devido á um obstáculo que não consigo ultrapassar.
Conto com a ajuda de vocês. Segue Abaixo:.
Tenho um Sistema onde é preciso Clicar em uma Estátua. Esse Script foi feito pelo @Leoxtibia e ele faz o seguinte:
Caso o Player clique na Estátua, e esse jogador não está em Nenhum Grupo, ele é 'Teleportado para dentro da Quest' e nenhum outro jogador poderá entrar no mesmo local até ele sair de lá.
Mas, caso o Player clique na Estátua, e esse jogador 'Está em um Grupo', ele é teleportado para dentro da Quest. E qualquer outro jogador 'que esteja no mesmo grupo daquele que está dentro da Quest' poderá, ao clicar na estátua, ser teleportado para dentro da Quest. Mas qualquer outro jogador que não esteja dentro do Grupo, seja Barrado de entrar.
O Meu pedido é bem simples. Queria apenas colocar para que o Jogador precisa-se de "1 Item" para ser Teleportado. Já tentei mais não obtive sucesso. Apenas consegui para que todos no Grupo precisasem ter o "Item (ItemID: 2349)" para poderem ser Teleportados, nessa part do Script:
if (getPlayerItemCount(k, 2349) < 1) then doPlayerSendCancel(cid, "Todos os Jogadores devem ter o item para entrar nesta Dangerous.") return true end
O Script faz a verificação do Jogador dentro da Quest. Se tiver jogador lá dentro, o Player de fora não entra. O Script é esse :.
local t = { level = 10, --- Nível necessário para ser Teleportado. party = 2, --- Mínimo de Jogadores no Grupo. quest = {x=427,y=374,z=14} --- local da Dangerous. } --==============================================================================================================================-- local fromPos,toPos = {x = 358, y = 364, z = 14},{x = 488, y = 480, z = 14} --- Começo e Final da Área. --==============================================================================================================================-- function onUse(cid, item, position, fromPosition, itemEx, toPosition) local test = {} local players = getPartyMembers(getPartyLeader(cid)) if (getPlayerParty(cid)) then if(getPlayerParty(cid) == cid) then if #players >= t.party then for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do local pos = {x=x, y=y, z=fromPos.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then return doPlayerSendCancel(cid, "Alguém já está fazendo esta Dangerous") end end end --===============================================================================================================================-- for i, k in ipairs(players) do if (getPlayerLevel(k) < t.level) then doPlayerSendCancel(cid, "Todos os Jogadores devem ter Nível "..t.level.." ou maior para entrar nesta Dangerous.") return true end if (getPlayerItemCount(k, 2349) < 1) then doPlayerSendCancel(cid, "Todos os Jogadores devem ter o item para entrar nesta Dangerous.") return true end table.insert(test, k) end --===============================================================================================================================-- for i, tid in ipairs(test) do doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF) doTeleportThing(tid, t.quest, true) doPlayerRemoveItem(tid, 2349, 1) doSendMagicEffect(t.quest, CONST_ME_ENERGYAREA) end else return doPlayerSendCancel(cid, "É necessário pelo menos "..t.party.." Jogadores no Grupo.") end else return doPlayerSendCancel(cid, "O Líder do Grupo deve usar a Estátua Primeiro.") end else for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do local pos = {x=x, y=y, z=fromPos.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then return doPlayerSendCancel(cid, "Alguém já está fazendo esta Dangerous") end end end end return true end
Aguardo Respostas.
Abraços !!
-
Duvida Atendida!
Reportando Para Moverem.
Abraços!
-
Ta na Pasta Mods/Script/customspells.
Abraços !!
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
TibiaGun - PC | Mobile
em OTServlist
Postado
TibiaGun é um MMORPG inspirado no tíbia. Focado em um mundo destruído e habitado por criaturas, você é um soldado que se voluntariou para ajudar a controlar o aumento agressivo de monstros.
SITE: http://tibiagun.servegame.com/
INSTAGRAM: https://instagram.com/tibia_gun
FACEBOOK: https://www.facebook.com/tibiagun
O servidor é construído em cima de uma gameplay envolvendo armas de fogo. Clique e atire, loot automático e itens com sistema de raridade. Tudo preparado para acomodar jogadores amantes de RPG.
Possuímos um mapa próprio, com segredos e missões disponíveis a cada nível que seu personagem alcança. Há missões de tempo, em grupo e até puzzles disponíveis. Basta seguir as localizações no mapa, analisar o ambiente e buscar seu prêmio.
Queremos que seu tempo seja bem gasto no servidor. Por meio disso, temos um sistema onde você pode ganhar dinheiro sempre que evoluir seu personagem. Jogue, divirta-se e ganhe. É isso o que oferecemos.
Temos um arsenal com mais de 60 magias únicas para equipar em seu personagem. Não possuímos vocações, de modo que todas as magias podem ser usadas por qualquer jogador, sendo sua arma equipada um diferencial de força.
O servidor conta com diversos sistemas únicos, criados do zero e apropriados ao diferencial do servidor.
IMAGENS DO SERVIDOR