Histórico de Curtidas
-
Orientalz deu reputação a Kimoszin em Problema /attr position x y zCria um teleport embaixo de você.
newteleport.lua
function onSay(cid, words, param, channel) local s = string.explode(param, ",") local topos = {x=s[1], y=s[2], z=s[3]} doCreateTeleport(1387, topos, getCreaturePosition(cid)) return TRUE end talkactions.xml <talkaction words="/newteleport" access="5" event="script" value="newteleport.lua"/> /newteleport 1017, 1027, 7
-
Orientalz deu reputação a Yan Liima em Limite de players em guild websiteLimite máximo de players em guild WEBSITE ?
Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
Decidi disponibilizar. Não só para Modern, mas para Gesior também!
Estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Modern AAC:
Gesior:
Segunda maneira:
Modern AAC:
Gesior:
Prontinho galera!!!
Caso queiram para cmd in-game: LINK
-
Orientalz deu reputação a JehJunco em Adicionando restrição de level e vocação em itensOlá pessoal.
Andei fazendo várias pesquisas pela internet atrás de "como adicionar restrição de level e vocação em itens" e achei alguns conteúdos bacanas (mas não lembro se foi neste fórum), porém muitas vezes o conteúdo desejado não vinha bem explicado.
Tomando isto como base, resolvi criar este post para que várias pessoas que venham a ter a mesma dúvida que eu tive consigam saná-las.
Para quem está procurando colocar restrições em todos os equipamentos (sejam armaduras, armas ou até mesmo munições), segue abaixo um tutorial bem básico (lembrando que não sou programador, apenas um curioso que quando enfia algo na cabeça, não sossega enquanto não resolve! ).
Para isso, vamos modificar o arquivo MOVEMENTS.XML e somente os valores em "itemid", "level" e "vocation id" (OBS.: sempre faça uma cópia do arquivo para evitar possíveis problemas com edição).
Para AMULETS:
<movevent type="Equip" itemid="" slot="necklace" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="" slot="necklace" event="function" value="onDeEquipItem"/> Para HELMETS:
<movevent type="Equip" itemid="" slot="head" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="head" event="function" value="onDeEquipItem"/> Para ARMORS:
<movevent type="Equip" itemid="" slot="armor" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="armor" event="function" value="onDeEquipItem"/> Para LEGS:
<movevent type="Equip" itemid="" slot="legs" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="legs" event="function" value="onDeEquipItem"/> Para RINGS:
<movevent type="Equip" itemid="" slot="ring" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="" slot="ring" event="function" value="onDeEquipItem"/> Para BOOTS:
<movevent type="Equip" itemid="" slot="feet" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="feet" event="function" value="onDeEquipItem"/> Para SHIELDS:
<movevent type="Equip" itemid="" slot="shield" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="shield" event="function" value="onDeEquipItem"/> Para WEAPONS:
<movevent type="Equip" itemid="" slot="shield" level="" event="function" value="onEquipItem"> <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="shield" event="function" value="onDeEquipItem"/> Por que utilizar o slot="shield" para armas?
No começo eu achei que não iria funcionar, pois somente um escudo pode ser equipado por vez.
Daí pensei: E se eu utilizar este atributo nas armas, será que vai dar certo? Afinal de contas, assim como os escudos, as armas também usam as mãos e também podem ser equipadas uma por vez!
Eis o resultado: Funcionou perfeitamente!
Para AMMUNITIONS (flexas e bolts):
<movevent type="Equip" itemid="" slot="ammunition" level="" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="" event="function" value="onDeEquipItem"/> Vocês podem até questionar: Mas qual a finalidade de limitar equipamentos, armas se munições?
Simples! Assim como qualquer tipo de RPG (querendo ou não, de alguma forma Tibia se encaixa nessa categoria) existem certas restrições de equipamentos e também para prevenir que qualquer player utilize qualquer tipo de equipamento, arma ou até mesmo munições, sem possuir os requerimentos necessários exigidos pelo item em questão (o que não acontece em muitos OTs). Assim o jogo fica mais "balanceado" e mais próximo do que "as leis do RPG mandam".
OBS e opinião própria.: Para aqueles que são fãs de RPG, já devem ter percebido que a classe Paladin do Tibia não tem nada a ver com os paladinos de qualquer RPG! A única "semelhança" entre eles seria a utilização de magias sagradas, por que de resto são arqueiros com nome de paladinos!
Paladin = Classe cavaleira com atributos voltados mais para defesa e suporte a seus aliados.
Knight = Cavaleiro que ataca sempre na linha de frente, o famoso Berserker!
Archer = Atiradores excepcionais que evitam ao extremo a linha de frente, e dão suporte aos magos.
Mages = Clérigos (ou magos brancos - que utilizam apenas magias de cura e sagradas), Druidas (magos da natureza) e Black Mages (magos que utilizam magias negras e de destruição), entre vários outros!
Bom, é isso! Espero ter ajudado!
-
Orientalz deu reputação a Vodkart em Event BOSSposition é sempre do MENOR para o MAIOR... seja X, Y ou Z.
testa assim:
boss_hours = { ["01:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["02:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["03:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["04:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["05:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["06:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["07:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["08:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["09:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["10:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["11:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=8}}, time = 30, extra_time = 10}, ["12:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["13:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["14:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["15:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["16:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["17:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["18:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["19:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["20:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["21:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["23:45"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["23:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["00:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10} } function isWalkable(pos) -- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function getPlayersInBossArea(tb) local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), tb.pos.fromPosition, tb.pos.toPosition) then t[#t+1] = pid end end return t end function doRemoveBoss(tb, force) for x = tb.pos.fromPosition.x, tb.pos.toPosition.x do for y = tb.pos.fromPosition.y, tb.pos.toPosition.y do for z = tb.pos.fromPosition.z, tb.pos.toPosition.z do local m = getTopCreature({x=x, y=y, z=z}).uid if m ~= 0 and isMonster(m) then if not force and #getPlayersInBossArea(tb) > 0 then addEvent(doRemoveBoss, tb.extra_time*60*1000, tb, true) return true end doSendMagicEffect(getCreaturePosition(m), 54) -- Efeito no monstro quando for removido doSendMagicEffect(getCreaturePosition(m), 3) -- Efeito no monstro quando for removido doRemoveCreature(m) break end end end end end function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = boss_hours[hours] if tb then local create = true repeat local pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} if isWalkable(pos) then doCreateMonster(tb.boss_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) doBroadcastMessage("O Boss "..tb.boss_name.." nasceu!") addEvent(doRemoveBoss, tb.time*60*1000, tb, false) create = false end until not create end return true end
-
Orientalz deu reputação a Vodkart em Event BOSS@BangxD
Não testei
boss_hours = { ["10:00"] = {boss_name = "Demon", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["11:00"] = {boss_name = "Rat", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["12:00"] = {boss_name = "Hydra", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10} } function isWalkable(pos) -- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function getPlayersInBossArea(tb) local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), tb.pos.fromPosition, tb.pos.toPosition) then t[#t+1] = pid end end return t end function doRemoveBoss(tb, force) for x = tb.pos.fromPosition.x, tb.pos.toPosition.x do for y = tb.pos.fromPosition.y, tb.pos.toPosition.y do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then if not force and #getPlayersInBossArea(tb) > 0 then addEvent(doRemoveBoss, tb.extra_time*60*1000, tb, true) return true end doSendMagicEffect(getCreaturePosition(m), 54) -- Efeito no monstro quando for removido doSendMagicEffect(getCreaturePosition(m), 3) -- Efeito no monstro quando for removido doRemoveCreature(m) break end end end end function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = boss_hours[hours] if tb then local create = true repeat local pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} if isWalkable(pos) then doCreateMonster(tb.boss_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) doBroadcastMessage("O Boss "..tb.boss_name.." nasceu!") addEvent(doRemoveBoss, tb.time*60*1000, tb, false) create = false end until not create end return true end
-
Orientalz deu reputação a hiquezerah em Event BOSS@Orientalz tenta assim
<globalevent name="othersboss" interval="1000" event="script" value="othersboss.lua"/>
-
Orientalz deu reputação a Swiruseq69 em [8.54] Dragon Ball New StoryName of the project: Dragon Ball New Story Project version: v1.51 TFS version: 0.3.6pl1r102 Version of the protocol: 8.54 Dragon Ball New Story v1.51 What does our server have?: [*] Advanced and expanded SAG SYSTEM [*] The two weapons system [*] A lot of "chest quests" and those more discerning [*] Many bonus spells: (including "Mystic Chou Maretsugeki" and a lot more) [*] 19 "Balanced" vocations [*] Attack Speed System [*] Huge map (Comparing to other server) [*] And a lot more! *Can't remember tho* Once upon a a time (I mean, before Akram robbed me) the server was in the lead [in terms of anime servers and not only]. The record was 524 people online! :) Many people think, that this version was "the greatest of DBNS history". We don't have "orsh weapons", funny systems like in dbns v14?? XD VIDEO <-- Click to check video Screens: Download: [*]Engine: >> Click << [*]DLL's (only Windows): >> Click << [*]Client: >> Click << [*]Database: >> Click << Scans: [*]Engine: Virustotal.com [*]DLL's (only Windows): Virustotal.com [*]Client: Virustotal.com [*]Database: Virustotal.com In "engine" pack there are two files - First one to run it on Windows, secon one to run it on Debian 7 (DBNS v1.51 Engine.exe = WINDOWS / dbns_engine = LINUX). PROJECT ISN'T OpenSource.
////Last update: 29.06.2018 - 22:40
Changelog:
-
Orientalz deu reputação a xWhiteWolf em (Resolvido)[PEDIDO]/addskilla função é pelo distro.. no talkactions tem que estar assim:
<talkaction log="yes" words="/addskill" access="5" event="function" value="addSkill"/> e a forma de utilizar no server é pegando um char com acesso 5 ou maior e usando:
/addskill NOME DO PLAYER, tipo de skill, quantidade
um exemplo pra aumentar 10 leveis no character xWhiteWolf:
/addskill xWhiteWolf, experience, 10 se não estiver funcionando mesmo assim daí vc terá que trocar de distro :~
-
Orientalz deu reputação a koyotestark em Character View com outfit e skills Modern AACOla pessoas, venho trazer algo aqui que eu armenguei para meu site e queria compartilhar, com vocês que é o CharacterView com skills e outfits.
O Script de outfit no character view eu peguei do Otland postado pelo averatec e então fiz algumas adições com o pouco que entendo.
Vamos as explicações?
Para adicionar a outfit vcs vão precisar de 2 coisas.
1 - do script que vou disponibilizar
2 - das outfits de seu ot. para isso vcs terão que exportar manualmente ou do jeito que souberem, caso seja de ot alternativo, se for de tibia ja vou disponibilizar as outfits do 8.60 que foi coclocado pra dowload junto na postagem do otland.
Instalando view_chacracter.php
- Vá até a pasta do xamp ou programa onde está seu site e abra a pasta do site, caso seja no xampp será o htdocs.
Dentro da pasta procure por "SYSTEM", depois "APPLICATION" e depois "VIEWS"
Cole o view_character.php dentro de VIEWS.
- Agora para aparecer as outfits, vá em PUBLIC e cole tudo o que estiver dentro da pasta OUTFITTER que são: o arquivo "outfitter.php" e a pasta "outfits"
- Caso adicione novas outfits siga o modelo das outfits que estão dentro. "lembrando que devem estar sempre na pasta outfit e template" caso seja outfit colorida, coloque a base na pasta template.
- Caso seu servidor seja alternativo "dragon ball, naruto etc. apague todas as outfits e insira as suas de db/nt, renomeie as suas da seguinte forma "1_2_0_0" alterando somente o primeiro numero que é referente ao ID da outfit.
Eu adicionei apenas 5 skills, pois são os que mais sao usados em meu servidor, caso queira usar mais, basta copiar esta parte
e colocar abaixo ou acima e mudar o skill ID referente ao skill, sendo?
0 fist, 1 club, 2 sword, 3 axe, 4 distance, 5 shield e 6 fishing.
E renomear como desejar
- Caso queira remover as barras horizontais do fundo, basta remover este trecho
bgcolor="#D4C0A1"
Demonstração:
Eu fiz questão de usar uma outfit 64px para mostrar o que acontece quando for assim.
Optei por upar em mais de 1 servidor.
Arquivos:
Outfitter + Character View GoogleDrive
Outfitter + Character View Mediafire
Outfitter + Character View Mega
Outfitter + Character View.zip
SCAN:
https://www.virustotal.com/gui/file/4e35ee20732efb1e7df9196416bd40b05ea92230f629f9ba427d32dfdb7b8f71/detection
Creditos:
Eu: Kira Conquest/Kira Stark - por editarr e adicionar skill bar
averatec do Otland onde eu peguei o outfitter
eu não lembro onde eu peguei o script mana e health bar
-
Orientalz deu reputação a thiagobji em [NPC] Vender Spells pelo NPCOlá galera do TibiaKing, a um tempo eu estava querendo um NPC que vendia spells (magias)
Porém, eu não achava, na época não tinha, então, eu fui no ##### e pedi lá esse NPC que vendia spells pelo NPC, ai o "VODKART", postou esse NPC lá e me ajudou, e se não me engano, não existe esse NPC aqui no TK, então agora irá ter.
Chega de papo/enrolação e vamos para o que interessa.
Abra a pasta do seu OT/data/npc/NOME DO SEU NPC.xml e coloque isso:
needlearn="0" Você coloca assim: needlearn="1"
EXPLICANDO SOBRE O NEEDLEARN:
needlearn="1" -- Aqui está que precisa comprar a magia no NPC para poder usa-la.
needlearn="0" -- Aqui está que não precisa comprar a magia no NPC para poder usa-la.
CRÉDITOS:
Vodkart (Pelo Script)
Thiagobji (Pelo Tópico, Pelo Pedido e por postar no TibiaKing.com)
É ISSO GALERA, QUALQUER DÚVIDA SÓ POSTAR.
-
Orientalz deu reputação a Vodkart em (Resolvido)Todos ganham item ao matar bossfunction onDeath(cid, corpse, deathList) local monsters, t = {"Demon","Hydra"}, {} local items = {{2160,1},{2148,2}} -- ITEM ID, QUANTIDADE if isMonster(cid) and isInArray(monsters, getCreatureName(cid)) then for _, players in pairs(deathList) do if isPlayer(players) then local give = true if #t > 0 and isInArray(t, getPlayerIp(players)) then give = false end t[#t+1] = getPlayerIp(players) if give then for i = 1, #items do doPlayerAddItem(players, items[i][1], items[i][2]) end end end end return true end return true end
tag
<event type="death" name="AddItens" event="script" value="nome do seu script.lua"/>
adc no monstro
<script> <event name="AddItens"/> </script>
-
Orientalz deu reputação a Bodak Reborn em (Resolvido)Todos ganham item ao matar bosscreaturescripts/script
nome_arquivo.lua
local config = { monster = {"Demon", "Dragon"}, -- nome dos monstros, separado por vírgulas. item = {[1] = 2160, [2] = 2159}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3... qnt = {[1] = 2, [2] = 5}, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3... effect = 27, -- efeito ao matar o monstro. } function onKill(cid, target) if isInArray(config.monster, getCreatureName(target)) then for i = 1, #config.item do doPlayerAddItem (cid, config.item[i], config.qnt[i]) end doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".") doSendMagicEffect (getThingPos (cid), config.effect) end return true end XML:
<event type="kill" name="killBossReward" event="script" value="nome_arquivo.lua"/> Registre o evento em login.lua:
registerCreatureEvent(cid, "killBossReward")
-
Orientalz deu reputação a Bruno Carvalho em [TalkAction] Player Check SystemVersão: 3.2
Versão de tibia: 9.4+ (Funciona em anteriores)
Descrição: Existem muitos scripts que ajudam o administrador do servidor a cuidar dele, um deles é saber coisas sobre quem está jogando e se está sendo honesta. Eu peguei alguns scripts e estou juntando em um para diminuir o tamanho e ter uma fácil verificação.
TAG:
<talkaction log="yes" words="!p;/p" access="5" event="script" value="playercheck.lua"/> Script:
Talkactions/scripts/playercheck.lua
local config = { check = {"check", "viwer", "verificar", "ver"}, delete = {"del", "delete", "deletar"}, search = {"search", "procurar"} } function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count.." ("..item.itemid..")" else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" text = text..getItemsInContainer(item, sep+2).." ("..item.itemid..")" else text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" end end end return text end function onSay(cid, words, param, channel) local slotName = {"Cabeça", "Amuleto", "Backpack", "Armor", "Mao Direita", "Mao Esquerda", "Legs", "Pés", "Ring", "Ammo Slot"} local t = string.explode(param, ",") if(table.isStrIn(param, config.check)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[2]) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..") "..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..")" end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end end elseif(table.isStrIn(param, config.delete)) then if getPlayerGroupId(cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) if isPlayer(player) == TRUE then count = t[4] if(not t[4]) then count = 1 end if getPlayerItemCount(player, t[2]) > 0 then if doPlayerRemoveItem(player, t[2], count) then doPlayerSendCancel(cid, "Item Deletado.") else doPlayerSendCancel(cid, "Este player não esta quantidade.") end else doPlayerSendCancel(cid, "Este player não tem o item.") end end end elseif(table.isStrIn(param, config.search)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. t[2] ..");") local msg = "Resultados da busca pelo item ".. t[2] .." em seu banco de dados:\n\n" if result:getID() ~= -1 then while true do local name = result:getDataString("name") local online = result:getDataInt("online") msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n" if not result:next() then break end end else msg = msg .. "O item não foi encontrado em nenhum jogador." end doShowTextDialog(cid, t[2], msg) end end return true end Explicação:
Quando o god digita:
/p check, (PNAME) - Ele verifica os items que o player tem.
/p del, (ID), (PNAME), (COUNT) - Ele deleta o item de determinado player (Se não colocar o count ele irá remover somente 1).
/p search, (ID) - Ele verifica quantos players tem tal item e se está online.
Créditos:
Oneshot
CaioODemais
Comedinha (Bruno Carvalho)
-
Orientalz deu reputação a ViitinG em [creaturescripts] Senha para portaBom para quem não sabe como funciona o script,é basicamente uma senha para conseguir abrir uma porta e após um tempo a porta se fecha automaticamente,podendo ser configurado o tempo/senha/porta.
• Adicionando o script •
Em "data/creaturescripts/creaturescripts.xml" adicione está tag :
<event type="textoparaporta" name="Senha" event="script" value="senhaporta.lua"/> Em "data/creaturescripts/scripts/login.lua" adicione está tag no final do script :
registerCreatureEvent(cid, "Senha") Em "data/creaturescripts/scripts/senhaporta.lua" adicione este script :
local uniqueids = {8049, 8050} local passwords = { ["TibiaKing"] = {doorpos = {x = 163, y = 36, z = 7}, doorid = 6257, blackboardpos = {x = 162, y = 36, z = 7}, blackboardid = 1811, uniqueid = 8049, doorclosetime = 10}, ["TK"] = {doorpos = {x = 1000, y = 1000, z = 7}, doorid = 1213, blackboardpos = {x = 1000, y = 1000, z = 7}, blackboardid = 1811, uniqueid = 8050, doorclosetime = 10} } function onTextEdit(cid, item, newText) local x = passwords[newText] local function onCloseDoor() if(getTileItemById(x.doorpos,x.doorid+1).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid+1).uid, x.doorid) doSendMagicEffect(x.doorpos, CONST_ME_MAGIC_RED) end end for _, check in pairs(uniqueids) do if item.uid == check then if x and item.uid == x.uniqueid then if(getTileItemById(x.doorpos,x.doorid).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid).uid, x.doorid + 1) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Sua Senha "'..newText..'" esta correta, voce pode entrar.') addEvent(onCloseDoor,x.doorclosetime*1000) doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) else doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) doPlayerSendCancel(cid, 'A porta ja esta aberta, feche-a ou espera ela se fechar.') end else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, 'Sua senha "'..newText..'" esta incorreta.') end end end return true end • Configurando •
Creditos : Limos
Imagens :
-
Orientalz deu reputação a LeoTK em (Resolvido)Drop Random com porcentagemFala galera procurei muito mas não consegui achar, alguém poderia fazer um script para dropar items randomicamente configuráveis de mais de um monstro por exemplo
os monstros minotaur,orc tem 50% de chance de dropar um machado ou uma espada e 5% de chance de dropar as duas o machado e a espada no mesmo loot estou precisando muito galera se alguém puder dar essa força
tfs 0.3.6 8.54
-
Orientalz deu reputação a Elwyn em (Resolvido)Tile que enxe staminaEssas mensagens são do print que deixei sem querer. Não apareceram outras mensagens?
Se você fizer essa talkaction:
function onSay(cid, words, param) local value = param and tonumber(param) or 1 doPlayerSetStamina(cid, value) return true end Com a seguinte tag:
<talkaction access="0-4" words="!teste" event="script" value="stamina.lua" /> E mandar no tibia a seguinte mensagem:
Sua stamina muda para 00:20?
A propósito, o script que estou usando no OTX é exatamente este:
E funciona perfeitamente. Note que é apenas o script anterior sem o print e com um delay maior no regen de stamina.
-
Orientalz deu reputação a Vodkart em [Sistema] Battlefield Event! V.1Mapa BattleField Feito Por AnneMotta :
Mapa Battlefield.rar
Scan: https://www.virustot...sis/1346548669/
Imagens do mapa
Descrição:
- O evento é automático e acontece em determinado dia e hora da semana
- Logo após é aberto um teleport então apenar um número limitado de players entra no evento
- São formados por dois times, os "Black Assassins" e os "Red Barbarians"
- Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
- O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
Bônus:
- Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.
- Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.
- Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.
Lembre-se:
- De colocar Pvp Tool na área
- De colocar área NoLogout
Imagens:
Instalação:
Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento -
Orientalz deu reputação a VitorSubhi em [Sistema] Battlefield Event! V.1Sistema muito bem elaborado, porém possuem pessoas que gostariam de ativar o evento manualmente a qualquer momento, além do evento automático...
Então resolvi criar um Talkaction, para contribuir, para instalá-lo é muito fácil... Basta criar um arquivo chamado Battlefield em Data/Talkactions/Scripts, e adicionar:
function onSay(cid, words, param) if(param == '') then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "/battlefield players"), TRUE end if (tonumber(param) %2 == 0) then local tp = doCreateItem(1387, 1, _Lib_Battle_Info.tpPos) doItemSetAttribute(tp, "aid", 45000) CheckEvent(_Lib_Battle_Info.limit_Time) doBroadcastMessage("The event BattleField was opened. We are waiting "..param.." Players! Team divided into "..((param)/2).." VS "..((param)/2)..".") return setGlobalStorageValue(_Lib_Battle_Info.storage_count, param) end return TRUE end E em seguida adicionar ao arquivo Data/Talkactions/Talkactions.xml, a seguinte linha:
<talkaction words="/battlefield" log="yes" access="5" event="script" value="Battlefield.lua"/>
Como iniciar o evento, basta utilizar o seguinte comando (/battlefield players).
Obs.: O número de players deve ser par, considerando que haverá número de players iguais nos dois times.
-
Orientalz deu reputação a Vodkart em [PEDIDO] Low level protectlevelprotection.lua
function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) local level = 50 if isPlayer(cid) and getPlayerLevel(cid) < level then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doRemoveConditions(cid, false) return false end return true end TAG <event type="preparedeath" name="ProtectLevel" event="script" value="levelprotection.lua"/> caso não tenha registrado no login.lua adc registerCreatureEvent(cid, "ProtectLevel")
-
Orientalz deu reputação a marcoshps11 em [otcv8] Como utilizar - Ip fixo, spr, encrypt, auto update* Áudio de saudação *
Neste tutorial, irei ensinar alguns passos inicias para utilizar o OTClientV8
1º Passo: Como fixar ip e colocar a spr no local correto
- Faço o download no link: https://github.com/OTCv8/otclientv8
- Extraia o arquivo
- Dentro da pasta principal, vá até o arquivo init.lua
Neste trecho, precisará remover os comentários --[[ e ]]:
Servers = { --[[ OTClientV8 = "http://otclient.ovh/api/login.php", OTClientV8c = "otclient.ovh:7171", OTClientV8Test = "http://otclient.ovh/api/login2.php", LocalTestServ = "127.0.0.1:7171:1098:110:30:93" ]] }
Ficando assim:
Servers = { Meuserver = "127.0.0.1:7171:1098" } ficando na seguinte configuração NOME = "IP:PORTA:VERSÃO"
Para fixar e não aparecer a lista de servers, basta alterar:
ALLOW_CUSTOM_SERVERS = true -- if true it shows option ANOTHER on server list
Para:
ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list
Caso queira trocar o nome do aplicativo é só mudar
g_app.setName("OTCv8") trocando o "OTCv8" para o nome desejado, lembrando que isto irá alterar apenas o nome da janela do aplicativo
Incluir a SPR/Dat:
Para incluir, basta ir na pasta data, criar uma nova pasta e renomear com o nome "things" e depois criar uma outra pasta dentro dela com o nome da versão que desejar utilizar, exemplos:
* 800
* 860
* 910
* 1100
dentro desta pasta, incluir as respectivas spr/dat da versão correspondente
Um vídeo objetivo do conteúdo citado acima:
2º Passo: Remover campo "Token" da tela inicial
Apesar de ser algo simples, vejo muitos perguntarem como remover este campo, vamos lá:
- Vá até a pasta modules -> client_entergame
- Abra o arquivo entergame.lua
- Na linha 380 remova ou comente o trecho:
enterGame:getChildById('accountTokenTextEdit'):clearText()
- Na linha 412 remova ou comente o trecho:
G.authenticatorToken = enterGame:getChildById('accountTokenTextEdit'):getText()
- salve o arquivo
- na mesma pasta, abra o arquivo entergame.otui
- da linha 32 a 44 remova ou comente o seguinte trecho:
MenuLabel !text: tr('Token') anchors.left: prev.left anchors.top: prev.bottom text-auto-resize: true margin-top: 8 TextEdit id: accountTokenTextEdit anchors.left: parent.left anchors.right: parent.right anchors.top: prev.bottom margin-top: 2
Um vídeo objetivo do conteúdo citado acima:
3º Passo: como encriptar os arquivos
- Recomendo inicialmente criar uma cópia da pasta que ira encriptar, pois não é reversivo
- Copie o endereço da pasta onde estão os arquivos
- Abra o cmd e navegue até esta pasta utilizando o comando cd (link do endereço da pasta)
- utilize o comando otclient_dx.exe --encrypt
- Aguarde o sistema sinalizar que os arquivos foram encriptados
PS: a pasta do modulo bot ( modules -> game_bot ) não pode ser encriptado, remova ela antes deste processo.
Um vídeo objetivo do conteúdo citado acima:
4º Passo: Utilizando o auto update
IMPORTANTE:
Este processo precisa ser feito exatamente como demonstrado, qualquer link errado o sistema não irá funcionar.
- Dentro da pasta API, abra o arquivo updater_advanced.php
em $files_dir = "/var/www/otclient/files"; é a pasta onde conterá os arquivos do otclient para download, lembrando que o caminho precisa estar especificada desde a pasta inicial
em $files_url = "http://otclient.ovh/files"; é o link que você pode utilizar o navegador para acessar a pasta "files" a mesma pasta do processo anterior.
em $checksum_update_interval = 60; é o tempo em segundos, que o update levará para checkar se há alguma atualização ( não é necesário alterar )
- Na sua vps, dentro da pasta do SITE, cria uma pasta chamada API e outra pasta dentro dela chamada FILES
- Envie o arquivo updater_advanced.php para a pasta API
- De permissão 777 para pasta e subpasta API
* voltando aos arquivos do otclient *
- Abra o arquivo init.lua
aconselho alterar o "APP_NAME = "otclientv8", pois é o nome da pasta que ficará salva nos arquivos temporários, isso evitará conflitos com versões já existe no pc
altere o campo updater, colocando o endereço apontado para o arquivo updater_advanced.php enviado para o seu site nos passos anteriores.
- Após as edições anteriores, salve o arquivo
- Compacte os arquivos data, layout, modules e init.lua, renomeando para data.zip ( obrigatoriamente precisa ser zip )
- Exclua os arquivos zipados e os demais desnecessários para os jogadores.
Atenção: o auto update só funcionará se os arquivos estiverem zipado conforme descrito.
- Envie todos os arquivos para a pasta files em sua vps ( recomendo zipar para enviar, poupara processamento e tempo de envio )
- Após enviar, extraia os arquivos NA VPS, os arquivos no pc devem continuar zipado
- Atenção nesta parte, as pastas e arquivo data / layout / modules / init.lua necessáriamente precisam estar na mesma pasta do executáveis, conforme time 4:20 no vídeo que deixarei disponível no final.
lembrando: o update só aceitará arquivos editados após o tempo estipulado em checksum_update_interval , se fizer edições antes deste tempo, o sistema não irá considerar
Um vídeo objetivo do conteúdo citado acima:
-
Orientalz deu reputação a Vodkart em [MODS] [8.6] Fire Storm Event - AutomáticoEvento for fun para colocar no seu ot, quem é atingido pelo fogo morre, o último a sobreviver ganha.
O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos
exemplo: /firestart 1
Fire_Storm_Event.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>
A configuração está explicita na lib do mods... valeu!
fire lua.rar
-
Orientalz deu reputação a Wise em Item para o last hit / mais danoAmbos (lasthitkiller / mostdamagekiller) recebem um item?
Se for:
bossreward.lua (data\creaturescripts\scripts):
local lasthit = {5432, 1} -- lasthitkiller = {itemid, amount} local mostdmg = {5432, 1} -- mostdamagekiller = {itemid, amount} function doPlayerAddDepotItems(pid, item, count) -- function by magus - modified by vodkart local item, count = {item}, {(count or 1)} for k, v in ipairs(item) do local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1") return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false end end function onDeath(cid, corpse, deathList) local last, most = deathList[1], deathList[2] if isPlayer(last) then if getPlayerFreeCap(last) > getItemWeightById(lasthit[1], lasthit[2]) then doPlayerAddItem(last, lasthit[1], lasthit[2]) doPlayerSendTextMessage(last, MESSAGE_INFO_DESCR, 'You have received a reward for being the player that gave the last hit on the BOSS.') else doPlayerAddDepotItems(last, lasthit[1], lasthit[2]) doPlayerSendTextMessage(last, MESSAGE_STATUS_CONSOLE_BLUE, 'You have received a reward for being the player that gave the last hit on the BOSS. But you don\'t have enought cap, so it was sent to your depot.') end end if isPlayer(most) then if getPlayerFreeCap(most) > getItemWeightById(mostdmg[1], mostdmg[2]) then doPlayerAddItem(most, mostdmg[1], mostdmg[2]) doPlayerSendTextMessage(most, MESSAGE_INFO_DESCR, 'You have received a reward for being the player that gave the most damage on the BOSS.') else doPlayerAddDepotItems(most, mostdmg[1], mostdmg[2]) doPlayerSendTextMessage(most, MESSAGE_STATUS_CONSOLE_BLUE, 'You have received a reward for being the player that gave the most damage on the BOSS. But you don\'t have enought cap, so it was sent to your depot.') end end return true end
Tag - creaturescripts.xml (data\creaturescripts):
<event type="death" name="BOSSReward" event="script" value="bossreward.lua"/>
Registre o creature event no XML do monster:
<script> <event name="BOSSReward"/> </script> -
Orientalz deu reputação a Adriano SwaTT em (Resolvido)Tile que enxe staminaTeste este:
Registre em movements.xml as tags abaixo:
<movevent type="StepIn" actionid="12129" event="script" value="tile_stamina.lua"/> <movevent type="StepOut" actionid="12129" event="script" value="tile_stamina.lua"/>
Crie o arquivo tile_stamina.lua e cole o código abaixo dentro:
---------- Script by: Adriano Swatt -------- local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é adicionada local tempo = 5 -- em segundos para cada regeneração local tileid, action = 412, 12129 -- ID do Piso de Stamina, ActionID usada no Piso ----------- FIM DAS CONFIGURAÇÕES ----------- function onStepIn(cid, item, position, fromPosition) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if getsta < maxstamina and isPlayer(cid) then addEvent(GetStamina, 100, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end return true end function onStepOut(cid, item, position, fromPosition) stopEvent(GetStamina) return true end function GetStamina(cid) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if tilepos == action then if getsta < maxstamina and isPlayer(cid) then doPlayerSendCancel(cid, "Sua stamina está subindo.") setPlayerStamina(cid, getsta + qtdd) addEvent(GetStamina, tempo * 1000, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end end return true end
Poste o resultado.
Boa sorte.
-
Orientalz deu reputação a Elwyn em (Resolvido)Tile que enxe staminaeventsId = {} local function rechargeStamina(cid) if not isPlayer(cid) then eventsId[cid] = nil return end doPlayerSetStamina(cid, getPlayerStamina(cid) + 1) eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then stopEvent(eventsId[cid]) eventsId[cid] = nil end return true end
Agora ele só adicionará a cada minuto.
-
Orientalz deu reputação a LeoTK em [Modern Acc] Widget Promocional no HomeSalve galera bom uma vez cheguei a pesquisar e não achei nada do gênero porém achei esse script e funcionou perfeitamente espero que façam bom uso ele é um widget promocional que vai aparecer apenas se acessar o home do site ficando assim
Bom analisando o código eu percebi uma pequena falha futura que no caso seria a biblioteca de jquery então vou deixar os mesmo para baixar \/
jquery.popupoverlay.js
jquery-1.8.2.min.js
Bom o código que vou deixar já esta configurado para procurar as jquery na pasta raiz do site do modern ou seja pasta htdocs ou www onde fica a pasta
templates
system
public
etc...
Ficando assim
Código \/
Instalação \/
Para fazer funciona apenas no home do modern acc sera necessário adicionar esse código no home que se localiza em
\pasta do site\system\application\views - abra o arquivo home.php
No começo do arquivo vai ter <?php coloque o código acima ficando assim
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Popup by Dezon</title> </head> <body> <!-- Conteudo do popup: --> <div id="my_popup"> <!-- ########################## # Editar a partir daqui: # ########################## --> <p align="center"> <img src="http://i.imgur.com/07XkCV0.png" class="imgBorder"> </p> <p align="center"> <button class="my_popup_close btn btn-danger"> Fechar </button> </p> <!-- ####################### # Fim da edicao aqui! # ####################### --> </div> <!-- jQuery --> <script src="/jquery-1.8.2.min.js"></script> <!-- jQuery Popup Overlay --> <script src="/jquery.popupoverlay.js"></script> <script> // Nao mexa se nao sabe do que se trata!!! $(document).ready(function() { $('#my_popup').popup({ transition: 'all 0.3s', scrolllock: true, autoopen: true }); }); </script> </body> </html> <!-- Pagina de popup criada por Dezon, exclusivamente para o TibiaKing.com Por favor, manter esses creditos!!! Dezon - [email protected] --> <?php Se reparar todo o código esta adicionado e depois vem o código existente no home.php depois disso salve e pronto basta alterar o link da imagem para uma imagem promocional criada ao gosto de vocês
Créditos
ChaitoSoft
@dezon