Histórico de Curtidas
-
Eduardo Carvalho recebeu reputação de GOD Vitor em (Resolvido)New account free vip 5 diasfunction onLogin(cid) local dias = 10 if getGlobalStorageValue(getPlayerAccountId(cid)+333) <= 0 then doPlayerAddPremiumDays(cid, dias) setGlobalStorageValue(getPlayerAccountId(cid)+333, 1) end return true end
-
Eduardo Carvalho recebeu reputação de glacialot em {PEDIDO} Efeito no Playercreaturescripts..
local storage = 13500 local efeito = 30 local time = 5 function effect(cid) if isPlayer(cid) then if getPlayerStorageValue(cid, storage) >= 1 then doSendMagicEffect(getCreaturePosition(cid), efeito) addEvent(effect, time * 1000, cid) end end end function onLogin(cid) if getPlayerStorageValue(cid, storage) >= 1 then doSendMagicEffect(getCreaturePosition(cid), efeito) addEvent(effect, time * 1000, cid) end return true end <event type="login" name="PlayerEffect" event="script" value="NomeDoArquivo.lua"/> obs : para o efeito sair o player tem que deslogar 1 vez depois de ganhar a storage.
-
Eduardo Carvalho recebeu reputação de p e o p l e em Adicionar Storagelocal storage = 123 function onStepOut(cid, item, position, fromPosition) if getPlayerStorageValue(cid, storage) >= 1 then doPlayerSendCancel(cid, "Bem Vindo") else doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getCreaturePosition(cid), 12) doPlayerSendCancel(cid, "Você não fez a quest.") end return true end
-
Eduardo Carvalho recebeu reputação de churupetinha em [DUVIDA] Tile Vipfunction onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerPopupFYI(cid, "Voçe nao e vip , compre sua vip por apena R$9,00.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return true end local days = math.floor((getPlayerStorageValue(cid, 13540) - os.time()) / (24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ainda tem "..days.." dia(s) restante(s) de VIP.") return true end
-
Eduardo Carvalho recebeu reputação de churupetinha em [DUVIDA] Tile Vipé só colocar + 1 ali então..
function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerPopupFYI(cid, "Voçe nao e vip , compre sua vip por apena R$9,00.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return true end local days = math.floor((getPlayerStorageValue(cid, 13540) - os.time()) / (24 * 60 * 60) + (1)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ainda tem "..days.." dia(s) restante(s) de VIP.") return true end -
Eduardo Carvalho recebeu reputação de skailord em Dois Tipo De Spell Que TeleportaTa ae.. Agora é pelo nome , ngm tem o nome igual 'rsrs
local storage = 987123 -- storage local item = 2160 -- id do item local time = 20 -- tempo em segundos que o item vai ficar na posição. local pos = {} function terminus(cid) if isPlayer(cid) then for index, pid in pairs(pos) do if index == getCreatureName(cid) then local a = getTileItemById(pos[index], item) if a.uid > 0 then doRemoveItem(a.uid) end end end doPlayerSendTextMessage(cid, 22, "O item sumiu.") end end function onCastSpell(cid, var) if getPlayerStorageValue(cid, storage) - os.time() <= 0 then pos[getCreatureName(cid)] = getCreaturePosition(cid) setPlayerStorageValue(cid, storage, os.time()+time) doCreateItem(item, getCreaturePosition(cid)) doSendMagicEffect(getCreaturePosition(cid), 3) addEvent(terminus, time*1000, cid) elseif getPlayerStorageValue (cid, storage) - os.time() >= 1 then for index, pid in pairs(pos) do if index == getCreatureName(cid) then doTeleportThing(cid, pid) doSendMagicEffect(getCreaturePosition(cid), 10) end end end return true end o bom é que se mesmo o player deslogar e depois logar , se o item ainda tiver no lugar, o mesmo ainda é teleportado.
whitewolf, vlw por reportar o bug.
-
Eduardo Carvalho recebeu reputação de xWhiteWolf em Dois Tipo De Spell Que Teleportanão, o for está correto. Usei pairs, pq eu não usei table.insert, eu adicionei na tabela a posição no index do nome do player.
o for checa todos os index, e o index que for igual ao nome do player, ele teleporta para posição "pid"(posição salva no index do player).
O bug foi resolvido. Eu só errei em fazer isso pq sempre só testo com 1 player, ae já estou acostumado, como se no serve fosse entrar apenas 1 player 'rsrs
acabei de testar, está funcionando !
-
Eduardo Carvalho deu reputação a Absolute em [City War Event] Luta pela sobrevivênciaFala galerinha linda do TK, hoje estou trazendo um evento que andei modificando e otimizando, é o evento City WAR, este evento tem no servidor globalwar e outros.
A autoria vem de um membro da otland, portante havia o mesmo aqui em um datapack e decidi otimizar este evento para vocês do TK.
Observação: É um pouco parecido com o evento do meu amigo e scripter DuH, porém com mais funções e regras, mas o objetivo é praticamente o mesmo.
Como funciona:
Vamos lá;
Primeiramente, em sua pasta data/lib crie um arquivo com o nome de city war.lua e dentro do mesmo coloque:
configCW = {timetostart = 500, -- tempo para iniciar o evento em segundos by Absolute telpos = {x=32340, y=32213, z=7}, -- onde aparecerá o teleport stats = 201201201701, kill = 201201201702, death = 201201201703, ostime = 201201201704, evttime = 20, -- quanto tempo irá rolar o evento topleftPos = {x=32722, y=31336, z=6}, -- canto esquerdo superior botrightPos = {x=32791, y=31384, z=6}, -- canto direito inferior templepos = {x=32369, y=32241, z=7}, -- posição do templo principal arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- posição dos 4 tronos times = 8, -- não precisa mexer finaltime = 300 -- não precisa mexer } function configCW:new() local newevt = {} setmetatable(newevt, self) self.__index = self doBroadcastMessage("The City War will be open in " .. self.timetostart .. " seconds.") setGlobalStorageValue(self.stats, 0) addEvent(function () newevt:start() end, self.timetostart*1000) end function configCW:start() if getGlobalStorageValue(self.stats) == 0 then setGlobalStorageValue(self.ostime, os.time()) local teleport = doCreateItem(1387, self.telpos) doItemSetAttribute(teleport, "aid", 5540) setGlobalStorageValue(self.stats, 1) doBroadcastMessage("The City War is starting...") for _, posi in pairs(self.arenapos) do local item = getTileItemById(posi, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end addEvent(function () self:preclose() end, self.evttime*1000*60) addEvent(function () self:announce(0) end, (self.evttime/self.times)*1000*60) end end function configCW:announce(times) if times < self.times then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("Top City War fraggers: " .. self:getTopFrags()) end addEvent(function () self:announce(times+1) end, (self.evttime/self.times)*1000*60) end end function configCW:preclose() if getGlobalStorageValue(self.stats) == 1 then setGlobalStorageValue(self.stats, 2) doBroadcastMessage("The City War will end in " .. self.finaltime .. " seconds.") addEvent(function () self:close() end, self.finaltime*1000) local item = getTileItemById(self.telpos, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end end function configCW:close() if getGlobalStorageValue(self.stats) == 2 then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("The City War has ended. The winners are: " .. self:getTopFrags()) else doBroadcastMessage("The City War has ended. There were no winners.") end doRemovePlayersFromArea(self.topleftPos, self.botrightPos, self.templepos) for _, posi in pairs(self.arenapos) do doCreateTeleport(1387, self.templepos, posi) end for place, info in ipairs(self:getTopFrags(true)) do if place > 5 then break end local cid = getPlayerByName(info) doPlayerSendTextMessage(cid, 4, "Congratulations, you were the " .. place .. "º place in the City War.") doPlayerAddItem(cid, 6571, 1) end setGlobalStorageValue(self.stats, -1) end end function configCW:isPlayerInEvent(cid) if getPlayerStorageValue(cid, self.stats) == -1 or getPlayerStorageValue(cid, self.stats) - os.time() <= -5 or getGlobalStorageValue(self.stats) < 1 then return false end return true end function configCW:getTopFrags(tab) local frag = {} for _, pid in pairs(getPlayersOnline()) do if (getPlayerStorageValue(pid, self.kill) ~= -1 or getPlayerStorageValue(pid, self.death) ~= -1) and self:isPlayerInEvent(pid) then local kill = getPlayerStorageValue(pid, self.kill)+1 local death = getPlayerStorageValue(pid, self.death)+1 print(getCreatureName(pid), kill-death) table.insert(frag, {getCreatureName(pid), kill-death}) end end print(#frag) local frag, str, n = doOrderTab(frag, 0), nil, 5 print(#frag) if tab then return frag else if #frag < 5 then n = #frag end for i = 1, n do local cid = getPlayerByName(frag[i]) local kill = getPlayerStorageValue(cid, self.kill)+1 local death = getPlayerStorageValue(cid, self.death)+1 str = str and str .. ", " .. frag[i] .. "[" .. kill .. "/" .. death .. "]" or frag[i] .. "[" .. kill .. "/" .. death .. "]" end end return str end function doOrderTab(tabela, value) local max, index = {}, nil for i = 1, #tabela do valor = value for a, b in ipairs(tabela) do if b[2] > valor then valor = b[2] valor2 = b[1] index = a end end table.remove(tabela, index) if valor ~= value then table.insert(max, valor2) end end return max end Configuração do arquivo:
telpos = {x=32340, y=32213, z=7}, -- POSIÇÃO ONDE NASCE O TP DO EVENTO!
topleftPos = {x=32722, y=31336, z=6}, -- AQUI COLOQUE A POSIÇÃO DO CANTO ESQUERDO LA EM CIMA DO MAPA botrightPos = {x=32791, y=31384, z=6}, -- AQUI A POSIÇÃO DO CANTO DIREITO EM BAIXO DO MAPA templepos = {x=32369, y=32241, z=7}, -- POSIÇÃO DO TEMPLO ONDE OS JOGADORES NASCERAM PÓS A MORTE arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- ATENÇÃO, NO MAPA QUE ESTAREI DISPONIBILIZANDO VISIVELMENTE TERÁ 4 BASES, VOCÊ TERA QUE COLOCAR A POSIÇÃO DAS BASES AÍ NESSES 3 LUGARES. doPlayerAddItem(cid, 6571, 1) -- AQUI VOCÊ COLOCARÁ O PRÊMIO DO GANHADOR, NO CASO QUEIRA ADICIONAR POR EXEMPLO 1kk, COLOQUE 2160,1 - Primeiro ID depois quantia. Segundo passo, crie um arquivo com o nome de citywarCreature.lua e coloque dentro da pasta creaturescripts/scripts com o seguinte conteúdo: function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInRange(getCreaturePosition(cid), configCW.topleftPos, configCW.botrightPos) then setPlayerStorageValue(cid, configCW.death, getPlayerStorageValue(cid, configCW.death) +1) setPlayerStorageValue(lastHitKiller[1], configCW.kill, getPlayerStorageValue(lastHitKiller[1], configCW.kill) +1) end return true end E adicione em creaturescripts.xml a seguinte tag
<event type="preparedeath" name="CityWar" event="script" value="citywarCreature.lua"/> Terceiro passo, crie um arquivo em movements/scripts com o nome de citywarMovements.lua com o seguinte conteúdo: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition) if isPlayer(cid) and getGlobalStorageValue(configCW.stats) == 1 then doTeleportThing(cid, configCW.arenapos[math.random(1, #configCW.arenapos)]) doSendMagicEffect(getPlayerPosition(cid), 28) if not(configCW:isPlayerInEvent(cid)) then setPlayerStorageValue(cid, configCW.stats, getGlobalStorageValue(configCW.ostime) + configCW.evttime*60 + configCW.finaltime) setPlayerStorageValue(cid, configCW.kill, -1) setPlayerStorageValue(cid, configCW.death, -1) end else doTeleportThing(cid, fromPosition) end return true end Em Movements.xml adicione a seguinte linha: <movevent type="StepIn" actionid="5540" event="script" value="citywarMovements.lua"/> Quarto e último passo, em talkactions/scripts crie um arquivo com o nome de citywarTalkactions.lua e coloque o seguinte conteúdo:
function onSay(cid, words, param) if getGlobalStorageValue(configCW.stats) == -1 then configCW:new() else doPlayerSendCancel(cid, "The event is already running.") end return true end Em talkactions/talkactions.xml adicione a seguinte linha:
<talkaction log="yes" words="/citywar" access="3" event="script" value="citywarTalkactions.lua"/> E por fim, estou disponibilizando o world do evento, vocês usam se quiser, tentei adapta-lo para 8.6 mas ficou meio slá, o Viiting estava ocupado e não pode me ajudar, enfim segue a imagem e download do world.otbm:
Lembrando que ninguém além do Collocorpusek da otland tem direito de pedir remoção do script, pois a base é dele.
Créditos:
Absolute
Collocor Gringo Lindo.
-
Eduardo Carvalho recebeu reputação de thetzzz em (Resolvido)AJUDA com SCRIPT DE QUEST, MANDAR MSG PARA TODO O SERVERops, falta de atenção minha , testa ae agora..
function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 6411 then if getPlayerStorageValue(cid, 6411) <= 0 then doBroadcastMessage("O Jogador "..getCreatureName(cid).." completou a Anihilator 4.", MESSAGE_STATUS_CONSOLE_ORANGE) doPlayerAddItem(cid,9693,1) doPlayerAddItem(cid,2160,1) setPlayerStorageValue(cid,6411,1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já ganhou seu bonus.") end end return true end -
Eduardo Carvalho deu reputação a xWhiteWolf em Dois Tipo De Spell Que Teleportapelo que eu to vendo seu script tem um bug: se dois players usarem a spell o player 2 será teleportado pra posição 1. Confere isso pra mim e me diz se eu to errado.
OBS: seu script ficou muito melhor doque o meu mas tem esse bugzinho aí (acredito eu)
-
Eduardo Carvalho recebeu reputação de skailord em (Resolvido)spells de teleporteTa ae mano..
o conteúdo dos tópicos são o mesmo.
http://www.tibiaking.com/forum/topic/35546-dois-tipo-de-spell-que-teleporta/
-
Eduardo Carvalho recebeu reputação de llucas75 em Tutorial Básico ActionsConteúdo removido por "anunciar venda de scripts".
-
Eduardo Carvalho recebeu reputação de macalo em [ERRO] SCRIPT LOTTERY.LUATestei aqui , funcionou :s
-
Eduardo Carvalho recebeu reputação de llucas75 em (Resolvido)[Erro] Alguém pode me dizer oque tem de errado nesse script?faz oq ele falou ^
é bug no editor !, é só abrir no bloco de notas e refazer.
-
Eduardo Carvalho recebeu reputação de llucas75 em (Resolvido)[AJUDA] Script TalkactionLucas, sempre que você usar um addEvent em um cid, cheque se ainda tem o mesmo, pq se o player sair vai dar erro !
function potion(cid) if isPlayer(cid) then doChangeSpeed(cid, -speed) doPlayerSendTextMessage(cid,22,textofinal) end end -
Eduardo Carvalho recebeu reputação de SliceFalso em (Resolvido)[AJUDA] Script TalkactionLucas, sempre que você usar um addEvent em um cid, cheque se ainda tem o mesmo, pq se o player sair vai dar erro !
function potion(cid) if isPlayer(cid) then doChangeSpeed(cid, -speed) doPlayerSendTextMessage(cid,22,textofinal) end end -
Eduardo Carvalho recebeu reputação de macalo em (Resolvido)[ERRO] SCRIPTé só remover essa parte de todos os monsters que a tenha :
<script> <event name="KillingInTheNameOf"/> </script> faz isso ! Não lembro todos os monstros que tem , é só procurar.
Creio que todos os monster que tem o nome no script tem o registro.
é só excluir
-
Eduardo Carvalho recebeu reputação de Farathor em Survival of the FittestLogo mais faço o mapa, e uma nova versão do evento, para que funcione em PVP zone.
Abraços.
-
Eduardo Carvalho recebeu reputação de Leoo Zanin em (Resolvido)[GLOBALEVENTS] Teleport automático4 hrs = 14400000
3 hrs = 10800000
2 hrs = 7200000
1 hr = 3600000
-
Eduardo Carvalho recebeu reputação de Dennyz em (Resolvido)pedido ao teleporta sumonando monstroisso não tem anda a ver com meu script 'kkkk
muda o uniqueid !
ou muda o tile.
-
Eduardo Carvalho recebeu reputação de Lyon em Survival of the FittestConteúdo removido por "anunciar venda de scripts".
-
Eduardo Carvalho recebeu reputação de luanluciano93 em System Multi VipConteúdo removido por "anunciar venda de scripts".
-
Eduardo Carvalho recebeu reputação de llucas75 em (Resolvido)addEvent Send magic effect Alguém sabe?function onUse(cid, item, frompos, item2, topos) local pausa = 30*1*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você dobrou sua Experiencia por 30 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server. expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal. local limitedeuso = 49015 local tempo = 1*1*1000 local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar." local timeEffect = 31 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect() if isPlayer(cid) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, 35) end end if item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,13) setPlayerStorageValue(cid, limitedeuso, os.time() + 30) doPlayerSendTextMessage(cid,22,texto) a = 1 while a ~= timeEffect do addEvent(effect, a * 1000) a = a + 1 end elseif item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end return true end lembrado que dessa maneira se o player logar o efeito não sairá novamente, até que o mesmo der use denovo.
-
Eduardo Carvalho recebeu reputação de llucas75 em (Resolvido)[erro] Pq o storage desse script não esta setando devolta?para setar a storage com tempo..
Exemplo :
if getPlayerStorageValue(cid, XXXX) - os.time() <= 0 then ... setPlayerStorageValue(cid, XXXX, os.time() + 2 * 60) else doPlayerSendCancel(cid, "Você só pode ... a cada 2 minutos.") end a storage é setada por 2 minutos.
para setar uma storage você usar :
setPlayerStorageValue(cid, XXXX, 1) Correto ? com os.time() só oq muda é o valor para qual será setada...
os.time() + TIME (por padrão é segundos) os.time() + 10 (a storage será setada por 10 segundos) os.time() + 10 * 60 (a storage será setada por 10 minutos) -
Eduardo Carvalho recebeu reputação de Killua em Tutorial Básico ActionsConteúdo removido por "anunciar venda de scripts".