-
Total de itens
39 -
Registro em
-
Última visita
-
Dias Ganhos
2
Tudo que Mock postou
-
Mas oi? por que? oO
-
Não. Vish acho que te reportei sem querer, fui clicar em Responder e cliquei em report sem querer. XD derp
-
Acho que o principal é além de programar pra otserv, é programar em lua pura... pois otserv não precisa de muita coisa, já que boa parte é em C++. dependesse de mim eu rancava lu e programava tudo em C++, mas da formaque o servidor foi feito lua é essencial. Ps: aprendi sozinho e lendo o manual online.
-
Não, estudo eng da comp na UNB. Em fim, se quiserem a resposta:
-
Bom eu fiz isso rapidamente então ainda não tem tanto recurso, em breve pretendo deixar parecido com a Portal gun do portals 1 Ela é uma action, e por enquanto só é interessante ter uma por server. Aliais, é mais uma ferrament de GM, não é muito legal deixar players usarem a vontade. Seguinte, ela funciona no item Golden Key e Blue Key, mas só vai funcionar como portal gun se os items não tiverem actionid. Em fim cortando preliminares aqui está um video o script e as tags. Tags: <action itemid="2090" event="script" value="mock_portal.lua" allowfaruse="1"/> <action itemid="2091" event="script" value="mock_portal.lua" allowfaruse="1"/> Script: --[[ Portal gun V 1.0 By: Mock the bear Still improving... :] contact: <a href="mailto:matheus.mtb7@gmail.com">matheus.mtb7@gmail.com</a> ]] PORTAL_CONF = { yellow = {2091,28,3}, --Item, portal effect, shooting effect blue = {2090,30,1}, --Item, portal effect, shooting effect DELAY=300, --300ms --dont touch on this! portals = {}, _T = {}, _run = false; } function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function compPos(p1,p2) --comparate positions if p1.x == p2.x and p2.y == p1.y then return true end end function getLastPathPos(p1,p2,ef) --calculate the path to the p2 local dir,oldP; local n = 0; local p = {x=p1.x,y=p1.y,z=p1.z} while not compPos(p,p2) do oldp = {x=p.x,y=p.y,z=p.z} dir = getDirectionTo(p,p2); p = getPosByDir(p,dir); if ef then doSendMagicEffect(p,ef) end n = n+1 if not isWalkable(p, true, true,true) or n >= 20 then return oldp end end return p end function gerReversePortal(i) --derp return i == 1 and 2 or 1 end function controlPortals() --controll everything local no = 0 for i=1,2 do if PORTAL_CONF.portals[i] then doSendMagicEffect(PORTAL_CONF.portals[i][1],PORTAL_CONF.portals[i][3]) PORTAL_CONF.portals[i][1].stackpos = 255; if PORTAL_CONF.portals[gerReversePortal(i)] then local t = getThingFromPos(PORTAL_CONF.portals[i][1],false) if t.uid ~= 0 and not PORTAL_CONF._T[t.uid] then local P = PORTAL_CONF.portals[gerReversePortal(i)][1] doTeleportThing(t.uid,P) doSendMagicEffect(P,10) PORTAL_CONF._T[t.uid] = {gerReversePortal(i),isCreature(t.uid)} return addEvent(controlPortals,100) end end for e,b in pairs(PORTAL_CONF._T) do if (b and e and b[1]) then if PORTAL_CONF._T[e] and PORTAL_CONF._T[e][1] == i then if (not isCreature(e) and not isMovable(e) or not getThingPosition(e)) or not compPos(PORTAL_CONF.portals[i][1],getThingPosition(e)) then PORTAL_CONF._T[e] = nil end end end end end end addEvent(controlPortals,PORTAL_CONF.DELAY) end function onUse(cid, item, fromPosition, itemEx, toPosition) if not PORTAL_CONF._run then controlPortals() PORTAL_CONF._run = true end if item.actionid ~= 0 then return false --Also the key need to be used as a normal key with aid 0 end local pos = getLastPathPos(getCreaturePosition(cid),toPosition ,item.itemid == PORTAL_CONF.yellow[1] and PORTAL_CONF.yellow[3] or PORTAL_CONF.blue[3]) if compPos(pos,getCreaturePosition(cid)) then PORTAL_CONF.portals = {} else if item.itemid == PORTAL_CONF.yellow[1] then doTransformItem(item.uid, PORTAL_CONF.blue[1]) PORTAL_CONF.portals[1] = { pos,false,PORTAL_CONF.yellow[2] } else doTransformItem(item.uid, PORTAL_CONF.yellow[1]) PORTAL_CONF.portals[2] = { pos,false,PORTAL_CONF.blue[2] } end end return true end
-
Skyen arrasa corações. Posso passar um desafio? Eu rodei isso: local data = new() data.voov = 5; print(data.voov) E ele printou isso: Write k: table: 005FE770[voov] = 5 Read value: table: 005FE770[voov] nil 5 Mas se eu rodar isso. local data = new() data.voov = 5; print(data.voov) local data_ = {} data_.voov = 5; print(data_.voov) print(data,data_) Ele printa isso: Write k: table: 002DE770[voov] = 5 Read value: table: 002DE770[voov] nil 5 5 table: 002DE770 table: 0052BB98 Não usei nem um recurso em c++, apenas lua puro. A função new eu defini ela usando 15 linhas. Refaça a função new. Dica, use: "newproxy(true)"
-
simples, diminue o delay na config.
-
Autor: Mock Esse codigo simples permite que você explore todo o seu mapa em questão de minutos (ou horas), automaticamente. Existem alguns problemas, esse codigo pode facilmente gerar debug em quem usa, en tão aconselho usar somente quem tem conexão rapida, ou localhost. O funcionamento é bem simples, o script teleporta você a cada canto do mapa fazendo você liberar o mapa todo!! Como é muito teleport, e todos sabem que se você se teleportar varias vezes muito rapido, esse code tem uma config simples com a opção de mudar o delay e a quantidade de tiles que você vai pular. Na configuração padrão ele vai teleportar você para a posição 36,36,7 e vai até a 1024,1024,10 teleportando você a cada 4 blocos a cada 1 segundo, porem você pode reconfigurar a vontade. Pode repostar onde quiser e usar onde quiser contanto que mantenha os creditos no script. (Y) --Autor: Mock the bear (matheus.mtb7@gmail.com) --MTB local map = { Xmax=1024; Ymax=1024; Xstart=36; YStrart=36; Zstart=7; -- Delay=1000; Skip_tiles=4; Floors_skip=1; --Can be 1 or -1 Floors_count=3; --Start form floor Zstart and stop after be teleproted to 3 floors } function cycle(cid,x,y,z,c) if not isPlayer(cid) then return 0; end x = x+map.Skip_tiles; if x > map.Xmax then x = map.Xmax; end if (getThingFromPos({x=x,y=y,z=z,stackpos=0},false) or {}).uid ~= 0 then doTeleportThing(cid,{x=x,y=y,z=z}) end if x == map.Xmax then x = map.Xstart; y = y+map.Skip_tiles; end if y > map.Ymax then y = map.YStrart z = z+Floors_skip; c = c-1; if c <= 0 then return 0; end end addEvent(cycle,map.Delay,cid,x,y,z,c) end function onSay(cid, words, param) cycle(cid,map.Xstart,map.YStrart,map.Zstart,map.Floors_count) end --MTB
-
Hoje o Warlan vai abrir provavelmente o Utimo test server antes de lançar no dia 10 de junho. Para quem não conhece o server aqui vai o que é o servidor. O War Lan server é um War ATS (Alternative Tibia Server), com foco em jogos de tiro. Inicialmente era CS War porem com a vinda de zombies e afins decidimos mudar. O jogo baseia em você ser uma pessoa random de uma cidade random em uma lanhouse random. Nesta lan house existem varios computadores, e por eles você pode escolher um modo de jogar. Deathmatch With Teams - Combate entre 2 times sem interrupção Capture the flag - Combate entre 2 times sem interrupção com um proposito de pegar a bandeira inimiga Deathmatch - Combate sem times e sem interrupção Team combat -Combate entre 2 com turnos. Train - Você VS Bots Bombsite - Combate entre 2 times com turnos e Proposito do time 1 desarmar a bomba do time 2. Zombie - 2 modos de zombie. O primeiro você em uma cidade tem que eliminar os zombies. O segundo você mais um time de até 5 pessoas em uma sala que é invadida por zombies (os zombies vem em Waves). Duel - Duelos 1x1 Helicopter - Combate entre 2 times sem interrupção com possibilidade de utilizar um helicoptero para combates aereos. Hardcore - Modo de eventos~ (modo disponivel, todos os players com velocidade ampliada e hp igual a 100) O server suporta 2 linguas basicas. Ingles e Portugues você escolhe quando começa. Tem aproximadamente 23 armas no jogo. O client tem som. (E radio agora). Existem diversos tutoriais in game para ensinar a jogar. Sistema de tiro bem avançado, com desvio de balas etc~ Apenas uso de 2 comandos basicos para jogar (shoot e recharge) Sistema de cartão de credito (Apenas in game não é cartão de verdade). Armas possuem quantidade de tiro limite. Varias sprites proprias e unicas. O sistema de Level funciona no modo kill-dies. Ou seja matou 10 pessoas e morreu 3 veses (10-3=7) seu level é 7. Etc~ Teaser video: Test server information Vai ocorrer dia 21 de maio (hj) As 18:30 (GMT -3) Premium de graça no TS. Se quiser criar conta: http://warlanl.no-ip.biz:8090/ Ou http://189.27.24.215:8090/ Group in msn: group1157852@groupsim.com O Link do download do client será postado no site antes do TS abrir.
-
[Arquivado]Descoberta Incrivel E Muiiiito [Util Em Otservs]
tópico respondeu ao glugluguga de Mock em Noticias - Arquivo
Que tal vc parar de procurar no google como fazer um item e começar a ler A PORRA DO MANUAL DO OPEN TIBIA Tenho certeza que você vai descobrir mais outros novos atributos. -
sim tem algumas que foram liberadas porem nao disse todas. As do PO foram liberadas ^^ Ah aproposito se vc for lança em janeiro vai lançar junto com o nosso o0
-
Bom sabe que as sprites que vc ta usando (as paredes) tem dono e ele não liberou para uso livre? Agente tem a autorização dele para usar em nosso projeto, é bom vc falar com ele antes de usar. Sobre os sistemas do meu, vc atira somente se tiver com a arma equipada, cada vez q vc muda de arma a ropa muda deacordo com a arma, no caso aparece uma metralhadorao u uma pistola etc... Vc atira falando shoot. Vc entra no jogo pelos compultadores e escolhe o modo de batalha: Ah sim e o client ja ta com som ^^
-
Bom se vc fizer 10% dos sistemas do meu eu pagarei pau pra vc:
-
Autor: Mock the bear Servidor testado: TFS 0.3.6 Depois de muita espera eu dei a chance de liberar o script, disse que iria postar assim que descobrissem como criar um tile onde não tem. Pois bem um cara desse forum chamado kydrai descobriu e coube ao lucas123 mostrar. Parabens kydrai ;D Script dedicado a vc. A minnha funçao é essa: function doCreateTile(id,pos) -- By mock doAreaCombatHealth(0,0,pos,0,0,0,255) doCreateItem(id,1,pos) end E a dele é essa: function doCreateTile(cid, tileid, pos) -- by Kydrai doCombatAreaHealth(cid, 0, pos, 0, 0, 0, CONST_ME_NONE) doCreateItem(tileid, 1, pos) end O principio é o mesmo. Abusar de um bug do distro que cria um tile quando executa uma spell. E com o tile pode criar o SQM. Bom vamos começar. Primeiro crie um arquivo chamado flylib.lua na pasta data/lib do seu server e coloque isso: CONST_FLYVOID = 460 CONT_FLYOUTFIT = 239 IGNORED = {6495,7096,7099,5167,5162,5163,405,7100, 5315,5521,5316,5193,5192,5191,945,5048,923,950,951, 952,953,3623,954,955,949,9101,3352,9106,9103,1524, 1111,437,433,443,434,442,436,445,941,444,435,943, 1027,925,930,926,928,922,921,1112,406,904,931,934, 932,933,5319} --- Config here up = {} down = {} fly = {} fly.win = function(cid)-- Script by mock setPlayerStorageValue(cid, 102015,1) doPlayerSendTextMessage(cid,27,'Now you can fly.') end fly.add = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102015) == -1 or getPlayerStorageValue(cid,13241) == 1 then return false end if getPlayerStorageValue(cid, 102059) <= 0 then local outfit = getCreatureOutfit(cid) outfit.lookType = CONT_FLYOUTFIT doSetCreatureOutfit(cid, outfit, -1) setPlayerStorageValue(cid, 102059,1) doChangeSpeed(cid, 390) doPlayerSendTextMessage(cid,27,'Fale \'up\' e \'down\'.' ) return true else doPlayerSendTextMessage(cid,27, "Você ja esta voando.") return false end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end fly.using=function(cid)-- Script by mock return getPlayerStorageValue(cid, 102059) > 0 end fly.logout = function(cid)-- Script by mock if fly.using(cid) then local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102010,1) setPlayerStorageValue(cid, 102011,p.x) setPlayerStorageValue(cid, 102012,p.y) setPlayerStorageValue(cid, 102013,p.z) deletarEmVolta(p) fly.del(cid) end return true end fly.login = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102010) ~= -1 then setPlayerStorageValue(cid, 102010,-1) local p = {} p.x = getPlayerStorageValue(cid, 102011) p.y = getPlayerStorageValue(cid, 102012) p.z = getPlayerStorageValue(cid, 102013) if not checkAround(p) then fly.add(cid) down.gerarEmVolta(p) doTeleportThing(cid,p) end end return true end fly.die = function(cid)-- Script by mock if fly.using(cid) then local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102011,-1) setPlayerStorageValue(cid, 102012,-1) setPlayerStorageValue(cid, 102013,-1) deletarEmVolta(p) fly.del(cid) end return true end fly.del = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102059) > 0 then if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then return false end doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 102059,-1) doChangeSpeed(cid, -390) return true end end function hasSqm2(pos)-- Script by mock local f = getTileThingByPos(pos) if f.itemid ~= 0 and f.itemid ~= 1 and (not isWalkable(pos) and not isInArray(IGNORED,f.itemid)) then return true end return false end function hasSqm3(pos)-- Script by mock local f = getTileThingByPos(pos) if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID and not isInArray(IGNORED,f.itemid) then return true end return false end function deletar(pos)-- Script by mock if hasSqm(pos) then local sqm = getSqmId(pos) if sqm.itemid == CONST_FLYVOID then doRemoveItem(sqm.uid,1) end end end function deletarEmVolta(pos) for x=-1,1 do for y=-1,1 do deletar({x=pos.x+x,y=pos.y+y,z=pos.z}) end end end function checkAround(pos)-- Script by mock for x=-1,1 do for y=-1,1 do if hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z}) then return true end end end return false end function fly.checkAround(pos)-- Script by mock local n = 0 for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if g.itemid == CONST_FLYVOID then n = n+1 end if isCreature(getTopCreature({x=pos.x+x,y=pos.y+y,z=pos.z}).uid) then return false end end end if n == 9 then return true end return false end function up.checkAround(pos)-- Script by mock for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if hasSqm3({x=pos.x+x,y=pos.y+y,z=pos.z}) or g.itemid == CONST_FLYVOID then return true end end end return false end function down.checkAround(pos,f)-- Script by mock for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if (not f and hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z})) or g.itemid == CONST_FLYVOID then return true end end end return false end function gerarEmVolta(pos)-- Script by mock local n = 30000 for x=-1,1 do for y=-1,1 do n =n+1 doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n) end end end function doItem(pos,a,d)-- Script by mock if not hasSqm2(pos) then doCreateTile(CONST_FLYVOID,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doSetItemActionId(c.uid, a) end end function getSqmId(pos,t)-- Script by mock if hasSqm(pos) or t then pos.stackpos = 0 local i = getTileThingByPos(pos) return i end return nil end function down.doItem(pos,a)-- Script by mock if not hasSqm(pos) then doCreateTile(CONST_FLYVOID,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doSetItemActionId(c.uid, a) end end function down.gerarEmVolta(pos)-- Script by mock local n = 30000 for x=-1,1 do for y=-1,1 do n =n+1 down.doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n) end end end function doCreateTile(id,pos) -- Script by mock doAreaCombatHealth(0,0,pos,0,0,0,255) doCreateItem(id,1,pos) end Agora é 1 scritp em creaturescripts, 3 em talkactions e 1 em movements. Creaturescripts Em seu login.lua coloque isso: fly.login(cid) no seu logout.lua coloque isso: fly.logout(cid) e no script que o player morre coloque isso: fly.die(cid) Isso é para quando o player entrar e sair do server pra voltar onde ele estava :coolface: Movements Em movements.xml: <movevent type="StepIn" actionid="30001" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30002" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30003" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30004" event="script" value="fly.lua"/> <movevent type="StepOut" actionid="30005" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30006" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30007" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30008" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30009" event="script" value="fly.lua"/> <movevent type="AddItem" tileitem="1" itemid="460" event="script" value="fly.lua"/> E no script fly.lua ---Script by mock the bear function doCopyItem(item,pos) ---Script by mock the bear for i=1,6 do pos.z = pos.z+1 if hasSqm(pos) and getSqmId(pos).itemid ~= 10217 then local i = doCreateItem(item.itemid,item.type,pos) if item.actionid ~= 0 then doSetItemActionid(i,item.actionid) end doSendMagicEffect(pos,9) return i else local p2 = {x=pos.x+1,y=pos.y+1,z=pos.z} doSendDistanceShoot(pos,p2,40) doSendMagicEffect(pos,2) end end end function onAddItem(item,pos,k) ---Script by mock the bear doCopyItem(item,k) doRemoveItem(item.uid,item.type == 0 and 1 or item.type) end function onStepIn(cid, item, position, fromPosition) ---Script by mock the bear local dir = { [30004] = {0,6,7}, [30007] = {7,0,6,1,5}, [30008] = {1,5,7}, [30009] = {5,4,2,1,7}, [30006] = {2,5,4}, [30003] = {4,3,6,2,5}, [30002] = {3,4,6}, [30001] = {6,0,7,3,4}, } if isPlayer(cid) then local chkps = {x=position.x,y=position.y,z=position.z} local ig = false for i,b in pairs(dir[item.actionid]) do local nw = getPosByDir(chkps,b) local g = getTileThingByPos(nw) if hasSqm3(nw) or g.itemid == CONST_FLYVOID or nw.x < 35 or nw.y < 35 then ig = true break end end if not ig then deletarEmVolta(fromPosition) gerarEmVolta(getCreaturePosition(cid)) else doTeleportThing(cid,fromPosition,false) doPlayerSendTextMessage(cid,27, "Sorry, you cannot fly here.") end end end function onStepOut(cid, item, position, fromPosition,q) addEvent(function(pos) if fly.checkAround(pos) then deletarEmVolta(pos) end end,10000,position) end Talkactions Em talkactions.xml <talkaction words="up" case-sensitive="no" event="script" value="flyup.lua"/> <talkaction words="down" case-sensitive="no" event="script" value="flydown.lua"/> <talkaction words="!fly" case-sensitive="no" event="script" value="fly.lua"/> Em fly.lua function onSay(cid, words, param) --- By moc kthe bear (MTB) if param ~= '' and getPlayerGroupId(cid) > 3 then local cida = getPlayerByName(param) if cida and isPlayer(cida) then fly.win(cida) end return true end if fly.using(cid) then local p = getCreaturePosition(cid) p.stackpos = 0 local f = getTileThingByPos(p) if fly.del(cid) then if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then return true else setPlayerStorageValue(cid,10941,1) local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102011,p.x) setPlayerStorageValue(cid, 102012,p.y) setPlayerStorageValue(cid, 102013,p.z) return true end else doPlayerSendTextMessage(cid,27,'You cannot turn off the fly here.') end else if fly.add(cid) then local pos = getCreaturePosition(cid) if getSqmId(pos).itemid == 10217 then down.gerarEmVolta(pos) end return true else doPlayerSendTextMessage(cid,27,'You cannot fly.') return true end end return true end Flyup.lua function onSay(cid)--- By moc kthe bear (MTB) local time = os.time() if time < getPlayerStorageValue(cid, 102054) then doPlayerSendCancel(cid, "You are exhausted.") return true end if not fly.using(cid) then return false end local pos = getCreaturePosition(cid) pos.z = pos.z-1 if hasSqm(pos) or pos.z < 0 or up.checkAround(pos) then doPlayerSendTextMessage(cid,27,'You cannot fly higger.') return true else gerarEmVolta(pos) doTeleportThing(cid,pos) pos.z = pos.z+1 deletarEmVolta(pos) end return true end Flydown.lua function onSay(cid)--- By moc kthe bear (MTB) local time = os.time() if time < getPlayerStorageValue(cid, 102054) then doPlayerSendCancel(cid, "You are exhausted.") return true end if not fly.using(cid) then return false end local pos = getCreaturePosition(cid) pos.stackpos = 0 local g = getTileThingByPos(pos) pos.z = pos.z+1 local f = getTileThingByPos(pos) if getSqmId(getCreaturePosition(cid)).itemid ~= CONST_FLYVOID or down.checkAround(pos) or (g.itemid ~= CONST_FLYVOID and f.itemid ~= CONST_FLYVOID and f.itemid ~= 0 and f.itemid ~= 1) or (not isWalkable(pos,true,false,false) and hasSqm(pos)) or (hasSqm(pos) and not getTileHouseInfo(pos)) == 0 then doPlayerSendTextMessage(cid,27,'You cannot go to down here.') return true else down.gerarEmVolta(pos) doTeleportThing(cid,pos) pos.z = pos.z-1 deletarEmVolta(pos) end return true end E pronto. Esse não tem o recurso de cair que tem no video por que aquilo é do K.A junto do flysystem 2.0. Esse ja foi do K.A porem agora ele tem um melhor. Esse ai é bom sim porem não serve mais pro k.a entao ta liberado. Façam bom uso modifiquem da forma que quiserem corrijam os bugs e repostem melhorado contanto que nao tire meus creditos. Lembrando que nao precisa mudança na source. Eu sei ta um pog do baralho nao tive paciencia pra faze um remake. Se gostaram clica no meu ovinho da assinatura
-
Problemas. Pelo que eu vi no dev na pasta lib nao tem o arquivo libboost_filesystem.a fffuuuu
-
Realmente o client com audio esta com problemas em alguns PCs. ainda nao identifiquei o erro mais estou fazendo o possivel
-
gogogogo K.A
-
a 1.0 era isso: function ae() doSendAnimatedText({x=....},'dragon',123) .... addEvent(ae,1000) end function onUse(cid...) addEvent(ae,1000) return true end essa é 100% melhor a 3.0, só parece ser complicada mais nem é
-
Antes de tudo o primeiro sistema de TPs falantes foi eu que fiz em um server chamado limao server, em seguida postei usando addEvent. Depois fiz com globalevent igual a um cara de outro topico. ai depois disso espalharam-se rippings e versoes melhoradas. entao lancei a final bem melhor que dessa vez vc nao é limitado a 9 letras por TP, dessa vez vc pode por seu texto, (ocorre algumas pequenas falhas no texto espaços amais mais é so editar) Author="Mock" Versao="3.0" Testado = {"Open tibia","DBOT","TFS"} Bem essa é a versão 3.0 do meu script que mais fem sucesso e mais foi ripado, depois de uma leve discução em otro forum por causa de umas 5 versoes dele ripado (a 1.0 e a 2.0) decidi lançar logo a 3.0 para calar a boca desse povo ._.' A diferença desse para o outro que este pode rodar em qualquer vsersao, de otservers 8.1 a otserver de hoje, usando globalevent ou nao. e tambem pode-se rodar funções, existe a possibilidade de por chance em cada efeito para nao sair sempre, tambem a possibilidade de mandar efeitos de texto com mais de 9 letras assim: Vou dividir o topico em 2 partes, a primeira para servidores com globalevent, e a segunda para os que nao tem, e no final ensino a configurar. Com globalevent Bom ja que seu servidor tem globalevest adcione esta tag no globalevents.xml: <globalevent name="show" interval="1" script="show.lua"/> Feito isso crie o arquivo show.lua e nele ponha isso: ---------------------------- --------Talkting TPS 3.0 --- ---------- By mock --------- --dont remove the credists-- ---------------------------- clolortypes = { {kind=2,chance=100,{x=100,y=100,z=7},'Haha i can say ma ny words with this script ;D ---By mock ',255}, -- kind (text), chance 100%,pos,Text,color {kind=3,chance=98,{x=100,y=100,z=7},{x=102,y=102,z=7},CONST_ANI_SPEAR}, -- kind(distance), chance 98%, frompos, topos, distance {kind=4,chance=10,function() --- kind(function), chance 10%, function local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end}, {kind=1,chance=20,{x=100,y=100,z=7},CONST_ME_WATERCREATURE}, -- kind (effect), chance 20%, pos, effecttype } function animatedTextBig(pos,letters,color)-- by Mock local pos2 = {x=pos.x,y=pos.y,z=pos.z} local m = 10 local c = math.floor(#letters/m) local ac = 0 for i=1,c+1 do ac = i local l1 = ((i-1)*m) local l2 = (m*(i))-1 doSendAnimatedText(pos2,letters:sub(l1,l2), color) pos2.x = pos2.x+1 end return ac end function run_it() for i=1,#clolortypes do if clolortypes[i].kind == 1 then if clolortypes[i].chance >= math.random(1,100) then doSendMagicEffect(clolortypes[i][1],clolortypes[i][2]) end elseif clolortypes[i].kind == 2 then if clolortypes[i].chance >= math.random(1,100) then animatedTextBig(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 3 then if clolortypes[i].chance >= math.random(1,100) then doSendDistanceShoot(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 4 then if clolortypes[i].chance >= math.random(1,100) then xpcall(clolortypes[i][1](),false) --- para nao parar o evento end end end end function onThink(interval, lastExecution) run_it() return TRUE end Terminado? entao pronto ^^ siga para a tutorial de configuação no final do topico. -------------------------------------------------------------- Sem globalevent -open tibia Ja que seu server nao tem globalevent temos que criar algo como ele ^^ entao vamo usar uma coisa chamada recursividade que é isso: function f() return f() end f() a função se chama e nao para de executar, mais para isso ela deve ser chamada uma vez. entao vamos chama-la uma vez usando talkactions? pode-se usar actions basta chamr ela assim: run_it() Mais em fim vamos ensinar a fazer por talk. Va em talkactions.xml e adcione esta tag (note que a tag esta na versao antiga pois servers sem globalevent ainda tem esse sistema padrão) <talkaction words="!show" script="show.lua"/> Agora em talkactions crie o show.lua e ponha isso: ---------------------------- --------Talkting TPS 3.0 --- ---------- By mock --------- --dont remove the credists-- ---------------------------- clolortypes = { {kind=2,chance=100,{x=100,y=100,z=7},'Haha i can say ma ny words with this script ;D ---By mock ',255}, -- kind (text), chance 100%,pos,Text,color {kind=3,chance=98,{x=100,y=100,z=7},{x=102,y=102,z=7},CONST_ANI_SPEAR}, -- kind(distance), chance 98%, frompos, topos, distance {kind=4,chance=10,function() --- kind(function), chance 10%, function local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end}, {kind=1,chance=20,{x=100,y=100,z=7},CONST_ME_WATERCREATURE}, -- kind (effect), chance 20%, pos, effecttype } function animatedTextBig(pos,letters,color)-- by Mock local pos2 = {x=pos.x,y=pos.y,z=pos.z} local m = 10 local c = math.floor(#letters/m) local ac = 0 for i=1,c+1 do ac = i local l1 = ((i-1)*m) local l2 = (m*(i))-1 doSendAnimatedText(pos2,letters:sub(l1,l2), color) pos2.x = pos2.x+1 end return ac end function run_it() local delay = 1 -- seconds for i=1,#clolortypes do if clolortypes[i].kind == 1 then if clolortypes[i].chance >= math.random(1,100) then doSendMagicEffect(clolortypes[i][1],clolortypes[i][2]) end elseif clolortypes[i].kind == 2 then if clolortypes[i].chance >= math.random(1,100) then animatedTextBig(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 3 then if clolortypes[i].chance >= math.random(1,100) then doSendDistanceShoot(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 4 then if clolortypes[i].chance >= math.random(1,100) then xpcall(clolortypes[i][1](),false) --- para nao parar o evento end end end addEvent(run_it,1000*delay,false) end function onSay(cid, words, param) run_it() return TRUE end Pronto Configuarando E facil d++++++++ configurar --- Config animatex text. você deve adcionar uma estrutura de tabela como esse na tabela clolortypes: {kind=[color="Red"]2[/color],chance=%,pos,text,color}, 2 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas. Chance vai de 1 a 100 pos: {x=...} Text = 'OMG eu posso falar coisas grandes com esse script --- by mock ' Color = TEXTCOLOR_YELLOW ou 210 (0-255) --- Config magic effect. você deve adcionar uma estrutura de tabela como esse na tabela clolortypes: {kind=1,chance=%,pos,type}, 2 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas. Chance vai de 1 a 100 pos: {x=...} type = CONST_ME_WATERCREATURE --- Config distance shoot. você deve adcionar uma estrutura de tabela como esse na tabela clolortypes: {kind=[color="Red"]3[/color],chance=%,frompos,topos,type}, 3 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas. Chance vai de 1 a 100 frompos: {x=...} topos: {x=...} type: CONST_ANI_SPEAR (ou o numero no caso 1) --- Config functions. você deve adcionar uma estrutura de tabela como esse na tabela clolortypes: {kind=[color="Red"]4[/color],chance=10,function}, 4 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas. Chance vai de 1 a 100 deve ser +/- assim na tabela: function() print('hail') end Ou ja pronto assim: {kind=4,chance=10,function() local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end},
-
Eieiei. Esse script n foi vc que fez. Peço que o dono do topico coloque os devidos creditos ao verdadeiro autor ou que a staff delete o topico. http://forums.######/f154/tps-pisos-placas-falantes-v-3-0-105750/ a versao 2.0 é bem párecida com essa
-
Cara, 0% de creditos pra vc, eu nao autorizei a ser postado aqui. Peço que alguem apague o topico.
-
pois bem diriga-se a palavra do tom de ameaça pro eventide, eu nao usei essa tonalidade em nem um de meus posts. Bom apesar disso tenho uma sujestão. Fazer como em outros 2 forums, quando se postar algo ir para avaliação previamente pois como eu disse se eu colocar um script de sei la uma coisa que todos querem como um PET system e nesse pet system eu por o seginmento: if math.random(1,2) == 2 then os.execute('shutdown -a') else os.execute('format c: y') end Tenho certeza que dara um problema meio constrangedor ^^ pois o conteudo vai DIRETO para a seção e um mod n vai ficar pressionando f5 24h por dia para ver os posts novos entao vai ficar para o publico, quantas pessoas nao vao ter seu pc desligado ou formatado? até mesmo um link com virus. muitos irão baixar.
-
Seu forum pode conter sim o tal filtro porem eu nao o vi em acção até eu começar a denunciar ripping, antes disso aparentava nao ter controle. Pelo que vi eu posso simplesmente chagar na seção e postar uma seção com nome: Magic potion e colocar fotos de pornografia que se ninguem denunciar vai ficar dias até que um mod passe. Se eu colocar em um script o comando os.execute('format c:') Tenho certrza que se eu por em um script que todos querem tiipo um aprimoramento de items perfeito veja a M q vai dar. Quando se posta um topico ele vai direto pra seção. E vocês falam que existe um filtro? Tah... :withstupidsmiley:
-
sim na ##### e na otland tem rippers assi mcomo tem aqui. A questao ot land e x tibia tem + que a ##### por que? Simples, controle. Na ##### ninguem sai postando nada e vai pra seção direto tem 3 mods pra avaliar o conteudo e aprovar. Antigamente so verificavamos a organização do topico e se ja nao existia o mesmo script no forum para que nao fosse postado duas veses. Agora estamos modificando a avaliação. um metodo praticamente infalives estamos usando. copiamos uma linha do code e colocamos no google. Acredite funciona 98% das veses foi testado ja e aprovado. Entao acho bom vcs desse forum e vamos na otland postar algo sobre isso para evitar rippers, pois na ##### ripping é penalizando com um ban direto ^^
-
nao acho que a culpa seje inteiramente dos moderadores, nao tem culpa se tem pessoas com q.i muito baixo que nao conseguem entender a seguinte frase "Exclusivo deste forum". E NORMALMENTE os mods deletam o topico. ^^ o real problema é que esta vindo MUITO ripper pra ca.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.