Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/27/11 em %
-
Estou muito ausente do forum, e hoje me deparei com um probleminha quando fui ajudar uns amigos. Queriamos fazer a inquisition Quest, real. E infelizmente não tenho tempo para criar scripts e acabei me matando para achar um que funcionasse. Lembro que esse script é simples, mas você deverá usar o cerebro. Pois é um pouco complexo entender como implementa-lo. Então irei compartilha aqui ELe é dividido em duas partes que funcionam juntas. Para faze-lo funcionar deve apenas colocar as Actionids necessarias em seus devidos teleports. No exemplo dando ele não usa o teleport convencional e sim o teleport 9773 que é apenas a sprite. Vamos aos scripts: Acrescente em data/libs/050-function.lua (Ou parecido): function doCreatureSayWithDelay(cid,text,type,delay,e,pcid) if delay<=0 then doCreatureSay(cid,text,type, false,pcid) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type, false,pars.pcid) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e,pcid=pcid}) end end Em movements adicione o inquisition.lua e adicione: local config = { bosses={---actionid, posicao para onde ira, valor que colocara, texto de entrada [1001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [1002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [1003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [1004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [1005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"}, [1006] = {pos={x=1064, y=1308, z=13, stackpos=1}, value=6, text="Entering The Shadow Nexus. All hope desapear!"} }, mainroom={---actionid, posicao que ira,menor valor de storage que poder entrar, texto de entrada [2001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [2002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [2003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [2004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [2005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"} }, portals={---actionid,texto de entrada [3000] = {pos={x=1065, y=1086, z=14}, text="Entering Inquisition Portals Room"}, [3001] = {pos={x=1098, y=1214, z=12}, text="Entering The Ward of Ushuriel"}, [3002] = {pos={x=1185, y=1067, z=12}, text="Entering The Undersea Kingdom"}, [3003] = {pos={x=1130, y=1213, z=12}, text="Entering The Ward of Zugurosh"}, [3004] = {pos={x=1148, y=1127, z=12}, text="Entering The Foundry"}, [3005] = {pos={x=1113, y=1254, z=12}, text="Entering The Ward of Madareth"}, [3006] = {pos={x=1043, y=1133, z=13}, text="Entering The Battlefield"}, [3007] = {pos={x=1148, y=1254, z=12}, text="Entering The Ward of The Demon Twins"}, [3008] = {pos={x=1195, y=1201, z=13}, text="Entering The Soul Wells"}, [3009] = {pos={x=1187, y=1213, z=12}, text="Entering The Ward of Annihilon"}, [3010] = {pos={x=1193, y=1254, z=12}, text="Entering The Ward of Hellgorak"} }, storage=56123,---storage usado nos teleportes da sala central walkback="You don't have enough energy to enter this portal",---Messagem que aparece se vc nao poder entrar no teleport da sala central e={} }----nao modificar, se nao tiver o creaturesaywithdelay} function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == TRUE then if(config.bosses[item.actionid]) then local t= config.bosses[item.actionid] if getPlayerStorageValue(cid, config.storage)< t.value then setPlayerStorageValue(cid, config.storage, t.value) end doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1, config.e) elseif(config.mainroom[item.actionid]) then local t= config.mainroom[item.actionid] if getPlayerStorageValue(cid, config.storage)>=t.value then doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) else doTeleportThing(cid, fromPosition) doCreatureSay(cid, config.walkback, 19) end elseif(config.portals[item.actionid]) then local t= config.portals[item.actionid] doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) end end end E em movements.xml: <movevent type="StepIn" itemid="9773" event="script" value="inquisition.lua"/> E em data/creaturescripts adicione o inquisition.lua e coloque: local config = { timeToRemove = 180, -- segundos message = "Go into the teleport in 180 seconds, else it will disappear.", teleportId = 9773, bosses = { -- Nome do monstro, Posicao do teleporte ["Ushuriel"] = { pos={x=1097, y=1214, z=12, stackpos=1}, aid=1001 }, ["Zugurosh"] = { pos={x=1129, y=1213, z=12, stackpos=1}, aid=1002}, ["Madareth"] = { pos={x=1112, y=1254, z=12, stackpos=1}, aid=1003}, ["Annihilon"] = { pos={x=1187, y=1214, z=12, stackpos=1}, aid=1005}, ["Hellgorak"] = { pos={x=1192, y=1256, z=12, stackpos=1}, aid=1006} }, brothers ={ ["Golgordan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Latrivan"}, ["Latrivan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Golgordan"}, brothersArea ={ fromPos = {x = 1139, y = 1244, z = 12}, toPos = {x = 1155, y = 1254, z = 12} } } } local function change(position) doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", 3000) return TRUE end function onKill(cid, target, lastHit) if(config.bosses[getCreatureName(target)]) then local t = config.bosses[getCreatureName(target)] local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(change, config.timeToRemove * 1000, position) elseif(config.brothers[getCreatureName(target)]) then local t = config.brothers[getCreatureName(target)] local brother = getCreatureByName(t.brother) if(isMonster(brother) == true) then if(isInRange(getCreaturePosition(brother), config.brothers.brothersArea.fromPos, config.brothers.brothersArea.toPos) == true) then return TRUE end else local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doItemSetAttribute(teleport, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(removal, config.timeToRemove * 1000, position) end end return TRUE end E em creaturescripts.xml: <event type="kill" name="Inquisition" event="script" value="inquisition.lua"/> E finalmente em cada boss da inquistion deve-se adicionar isso após: </flags> Este codigo: <script> <event name="Inquisition"/> </script> Explicando: Os teleportes da sala principal deverão ter os Actionid respectivos no script. Sendo que cada um levará ao seu devido lugar apenas se o player já tiver passado nele. Quando o boss morre, o script modifica o teleporte para o player poder voltar para a sala principal. -Todo teleporte de Boss deverá ter o actionid 3000 como default. Pois senão o player não poderá voltar. -Existem maiores explicações no proprio arquivo. Creditos:zakius1 ponto
-
[Advanced Reset System 2.0]
SkyTheKing reagiu a MarcelloMendes por um tópico no fórum
-= Advanced Reset System 2.0 =- By: MarcelloMkez Fala galerinha, to aqui dinovo , mas agora e com a versão 2.0 do meu 'Advanced Reset System'. E como prometido, trazendo algumas novidades: _________________________________________________________________________________________________________________________________ - Resets agora armazenados diretamente na 'DataBase', acabando com o sistema de Storages, e com o problema dos resets atrasados no look; - Opções para Abilitar e Desabilitar Condições como por exemplo: 'look = true' , [true,false] configurando como achar melhor; - E agora '[sTAGES]', para 'premmy' (Premium Account) e 'free' (Free Account); - Instala o System e cria a Tabela de Resets com o comando "/installreset"; OBS: Sistema testado em 'Mysql' não tenho certeza si funciona em 'sql'; e Testando em: 8.50 (TFS 0.3.6) e 8.6 (TFS 0.4.0) __________________________________________________________________________________________________________________________________ Vá em data/Talkactions, e crie um arquivo .lua e nomeie para advancedResetSystem.lua e Adicione Isso: --[[ <(Advanced Reset System 2.0)> Autor: MarcelloMkez. Contato: (marcello_dirt@hotmail.com) Versão: 2.0 Testado em: 8.50 e 8.60 TFS: 0.3.6 and 0.4.0 Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = true, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = false, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = true, -- Teleportar Player para o templo após resetar? [true, false] look = false, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 5, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 330, free= 350}, stage2= {resets= 9, premmy= 340, free= 355}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 355, free= 360}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 360, free= 365}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 370, free= 380}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 380, free= 390}, -- Coloque em Ordem... stage7= {resets= 35, premmy= 400, free= 410}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 40, premmy= 410, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 45, premmy= 450, free= 450}, stage10={resets= 50, premmy= 465, free= 465}, } --[[>> FIM STAGES <<]]-- --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end --=[by: MarcelloMkez]=-- E em Talkactions.xml adicione isso: <talkaction words="!resetar;/installreset" event="script" value="advancedResetSystem.lua"/> Instalando o Sistema - Após adicionar o script em TalkActions e em Talkactions.xml Use o comando "/installreset" em jogo, OBS: o System so pode ser Instalado pelo GOD! A a instalação será mostrada no default, e no Distro! Apos isso, Sistema Instalado! 'Explicando stages: Stage 1: stage1= {resets= 4, premmy= 330, free= 350}, resets: ---- Quantidade de Resets para o stage. premmy: ---- Level que Premmium Accounts podera Resetar. (no caso ate 4 resets) free: ------ Level que Free Accounts podera Resetar. (no caso ate 4 resets) --- Bom como vcs pode ver, vai ate o 'Stage 10': stage10={resets= 50, premmy= 465, free= 465}, --- Intao irei explicar, caso queiram adicionar mais stages... Use 'Ctrl + G' com o script aberto, e digite 71, e aperte enter, logo ira direcionar para linha 71 que no caso é esta: stage10={resets= 50, premmy= 465, free= 465}, - Abaixo dela adicione uma exatamente igual, so modificando o numero do stage ficando assim: stage10={resets= 50, premmy= 465, free= 465}, stage11={resets= 55, premmy= 465, free= 465}, Agora na linha 134 vai ta esta: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, Voce faz a mesma coisa adicionando embaixo da linha 134 porem mudando os numeros, ficando assim: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free}, Pronto, Ja esta adicionado o 'Stage 11' xD, Assim voce pode adicionar quantos stages quiser, basta configurar corretamente... Mais duvidas postem aqui. Aqui termino o post! espero que gostem, grato: ~~MarcelloMkez~~1 ponto -
[Globalevents] Entregando Itens Do Site Automaticamente
andreguima reagiu a walefxavier por um tópico no fórum
Vá em data\globalevents\scripts e crie um arquivo chamado : shop.lua Dentro dele add : -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por voce. Por favor faça o local para este item em sua mochila e aguarde '.. SQL_interval ..' segundos para obte-lo.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por voce. O peso do item e '.. full_weight ..' oz., Vc tem no momento '.. free_cap ..' oz. de capacidade livre. Coloque alguns itens no deposito e espere cerca de '.. SQL_interval ..' segundos para obte-lo.') end end if not(result_plr:next()) then break end end result_plr:free() end return TRUE end Agora vá em data\globalevents\globalevents.xml e add a tag: <globalevent name="shop" interval="30" script="shop.lua"/> Agora vá na Database do seu Ot server,acessando com o phpmyadmin,clique na sua database,em SQL e cole isto: CREATE TABLE IF NOT EXISTS `z_ots_comunication` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `action` varchar(255) NOT NULL, `param1` varchar(255) NOT NULL, `param2` varchar(255) NOT NULL, `param3` varchar(255) NOT NULL, `param4` varchar(255) NOT NULL, `param5` varchar(255) NOT NULL, `param6` varchar(255) NOT NULL, `param7` varchar(255) NOT NULL, `delete_it` int(2) NOT NULL default '1', PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ); Agora aperte EXECUTAR e pronto !! Agora compre um item em seu site e faça o teste,o item chega em 30 segundos !1 ponto -
Auto-border, Randomizer E Mapgenerator!
x0wner reagiu a DeadKennedy por um tópico no fórum
Pensei... alguem já postou scripts de auto randomizer??? e logo me veio a resposta: NÃO! Então é por isso que trago a vocês um map editor qual eu gostei muito, um randomizer que facilita muito e um gerador de mapa exelente!!! 1º os downloads: MapEditor AB(AutoBorder) 0.4.78 Obs: coloque o tibia.dat/spr na pasta, e coloque também o SEU itens.otb Créditos: SimOne e editado por "Desconhecido". Map Generator Obs: cores básicas já configuradas(azul = agua e etc) by KingCPI Créditos: Rento. MapEditor Mod(randomizer) Obs: randomiza id's para edição do mapa, com o map editor. Créditos: "Desconhecidos" e KingCPI pelos scripts. 2º TUTORIAIS: AUTO BORDER para usar o auto border eh simples.Ex: cubra uma area de agua e certifique-se de que o auto-border está ativado(edit/auto-border). selecione a grama, e veja o que acontece. MAP GENERATOR abra seu editor de images(paint por exemplo) cria uma imagem e salve como bitmap. abra o map editor mod, selecione a imagem e clik em "Start", e depois em save - não esqueça de colocar *.*otx no final do nome. Pra transformar pra Otbm, abra seu map editor e salve em outro lugar(comigo funfa). Randomizer(meu preferido) pra usar ele é meio complicado, depende do seu itens.otb... ele possui 2 endereços pra você especificar(Topico - Configurando o MapEditor Mod). depois q vc estiver com ele configurado, abra o map editor e em seguida abra o MapEditor Mod. Vá em import e veja que existem 27 arquivos de texto(na pasta q vc descompacto), são arquivos q eu criei pra facilitar, são listas de ids, selecione um pra testar e aperte em randomize. Vá para o map editor e clique arrastando pelo mapa: veja o que acontece. Alguma duvida 0800-MSG-TO-KINGCPI-0509 Hail Xtibia! Obs: não postei nenhum editor exadecimal(pro map editor mod) pq o meu usa um sys que burla alguma coisa e antivirus acusa, então resolvi não postar. Atenciosamente, KingCPI1 ponto -
Linnux Baiakzik V4.5 Map Um Mapa Rox Muitas Inovações Novas Hunts Novas Spells Novos Comandos Nova VIP Nova Vocation O Mapa Original é um baiak original, que foi editado pelo mapper BaiakZik, que logo depois eu comecei a editar thumbsupsmiley Tirei Alguns Bug's do Servidor Que Eu Sabia Criei Uma Nova Area VIP (VIP5) Nova Promotion Adicionada (funciona 100%) Novas Magias para nova promo Tirei Bug da Quest VIP Por Enquanto a VIP5 está pequena, mas boa, mas logo logo estará com nova city e muito mais Agora Vamos deichar de Papo, Vamos ao que enteressa, as SS Temple Teleports Teleports Para Eventos <noscript> Créditos Baiakzik Linnux(eu) Download do Serv Completo [download]http://protetordelink.com/?780956bc[/download] Alguem Poderia Postar Scan Para Mim???1 ponto
-
New Naruto V3
irandasilvaalve reagiu a syshuy por um tópico no fórum
DE uma olhada no topico: Formaçao New Naruto v4 voltei a fazer os narutibias Map editor corrigo >> .Map editor ele ja tem npcs e monster da ultima atualizaçao. a v4 esta 30% pronta, esta demorando pq estou fazendo bem caprichado. Sobre os monster a exp do 4 kage vai ser diminuida, as areas do 2andar do templo sera liberada ,o monster Raikage sera adicionado. #infelizmente algumas das orgs citadas a baixa nao sera criadas por falta de sprites, mais serao 2,3. os errors que dao nos itens sera arrumado , 90%dos bugs sera corrido ,porque alguns eu nao sei arrumar como por exemplo '/n ' naao sei se dara para adicionar o comando /r mais vou tentar. !cmot3416 e !promotesex serao alterados para players nao poderem uzar. #MAPA o mapa nao tera grandes mudanças,mais vo tentar deixar as coisas legalzinha, nao sei mt sobre mapping intao se ficar feio voces que arrumen ao gosto . #previsao nao tem previsoes,estou bastante ocupado ultimamente graças a escola. pode ser que demore, pode ser que seja rapido. ----COMUNICADO---- encerro as atualizaçoes para o naruto v3. ----sem previsao---- Postarei a update v4 com muito mais organizaçoes, muito mais hunts.... so um pequeno preview .... Naruto Kage HAnzou salamandra Danzou Ginkaku e Genkaku Kakashi Anbu Itachi Anbu Chouza( pai do chouji ) Shikaku ( pai do shikamaru ) shibi ( pai do shino ) inochi ( pai da ino ) Killer Bee Momochi zabuza Gamas... Kurenai Sarutobi azuma( o verdadeiro sem ser o sensei) UZUMAKI kushina RIKUDOU SANNIN tsunade sannin Uchiha Fugaku ( pai do sasuke) uchiha sishui ( amigo do itachi ) Entre Outras O templo sera 100% modificado. As Hunts 80% modificadas Tera sala com Bosses. Sala de eventos. EM baixo do templo antes dos Gennins tem um espaço grande livre. Se alguem poder me dar dicas para o que fazer ali agradeçeria. Mapa que foi uzado no refugianaruto.servegame.com orgs existentes: ANBUS(MEDININ OININ LIDER)/ NUKENIN/TAKA/AKAT/KAGE/SENSEI/SHIPPUDEN/MADARA/IZUNA/SANNINS (NAO TEM TSUNADE)/NARUTO SENNIN E MAIS 2 ORGS FEITA POR MIN. ps: o npc naruto sennin ele nao muda a outfit do player intao pessa para ele uzar o comando !cmot3416 12 scan:SCAN SS: Creditos 50%Caio vilela ( pegamos as spells e npcs ) 10%a equipe do slim(por ter feito uma editada no mapa) 40%adm calish( editamos spell's balanceamos alguns clans ex:puppeter,criamos npcs,hunts,e uma leve editada no mapa) se for postar o server em outro lugar nao se esqueça dos creditos DOWNLOAD DO SERVER >>>>>>>>>> ---DOWNLOAD--- o arquivo esta comprimido em 9.74 mb. MAP EDITOR UZADO: map editor client recomendado AQUI Gostou? da rep+ ai nao gostou? da rep+ tmb porfavor comentem a respeito do server .. o que esta ruim o que pode melhorar vlw . Client recomendado >> Aqui -----------BUGS ATUAIS--------- trap do yondaime derruba o server mais isso sera corrido(---CORRIGIDO---) o comando /n buga os adms -----------------EDIT-------------- ATUALIZAÇAO 9-JUNHO 2011 NOVO MONSTER ADICIONADO (MVP WHIT WOLF).QUE DERRUBA ITEM UNICO BUG DO "UP DOIS CORRIGIDO" NOVAS SPELLS ADICIONADAS. MVP ATACK ( ATK DO NOVO MONSTER) MVP MANA ( ATK DO NOVO MONSTER ) MVP TRAP(ATK DO NOVO MONSTER) - ATACK ADM- UMA SPELL SO PARA ADM QUE POSSUI AREA PEQUENA E HIT ENORME. NOVA SPELL DO YONDAIME = RASENGAN SUPREMO 2 NOVAS ORGS ADICIONADAS MECHA E SOLDIER ( N EXISTEM NO ANIME ) MECHA= ATAQUES DE LONGA DISTANCIA GASTA MANA MODERADA E HIT MODERADO. SOLDIER= ATAQUES CURTA DISTANCIA GASTA MUITA MANA E ATAQUE DEVASTADORES.(nao e bom para upar mais otimo em pvp) Se algum spriter quiser me ajudar nesse projeto sera bem vindo SUGESTOES PARA NOVAS ATUALIZAÇOES ORGS SPELL MONSTER SAO BEM VINDAS. desculpem pelo meu analfabetismo duvidas me add msn: pedro.hlv@hotmail.com ouuuu kuchikibyakuya30@hotmail.com << esse de preferencia aew galera nao fale que o server e seu .passei um bom tempo fazendo o server nao roube meus creditos JA QUE NAO SEI FAZER ENQUETE VAI AQUI MESMO KKKK VOCE É A FAVOR DE CRIAÇAO DE ORGANIZAÇOES NAO EXISTENTES NO MANGA/ANIME? #SIM #NAO votem porfavor e se alguem souber cria enquete me avisa1 ponto -
[Spells] Novas Spells Totalmente Novas
sprainedweb reagiu a CoGames por um tópico no fórum
Olá Galera XTibiana, hoje resolvi postar algumas spells novas que eu fiz! Script Sobre: Spells. Erros ou Bugs: Não, nenhum erro e nenhum bug, testei em 2 otservers 8.4, em um 8.54 e em um 8.6. Créditos: 100% CoGames. Rep+ Para: CoGames xD Screen Shot: Com certeza! Agora vamos as spells: Primeiro, não se esqueça que em cada magia, tem que escrever em data/spells/spells.xml as seguintes palavras: Hora das magias: Hyakka: Tem um mega efeito de gelo junto com neve que gira em torno do jogador! SS: Vá em data/spells/scripts, copie e cole um arquivo.lua e renomeie-o para Hyakka, dentro cole: Fusion: Tem um efeito de gelo, combinando com um attack de ninja. SS: Xtreme Xtar: Uma combinação de flechas para baixo com um efeito parecido com teleport. SS: Igeb: Explosão azul acompanhada com uma explosão vermelha. SS: Crux Divina: Uma explosão de death para baixo. SS: Spinnalicious: Um conjunto de combos e efeitos bombas. SS: Tosion Xtreme: Vários efeitos rodando o jogador. SS: E então, estas são as minhas novas spells, espero que gostem! Não se esqueçam de que se gostar, mande um REP+, não quebra o dedo e faz bem1 ponto -
Retirando Erros Do Server
alisson1911 reagiu a SkyDangerous por um tópico no fórum
Tutorial:Retirando erros comuns na hora de abrir seu OTSERV Nivél do Tutorial: Super Facil Benefícios: Com a retirada dos erros , seu OTSERV abrirá mais rapido e concerteza livre de lags ou seja seu servidor rodará perferitamente ------------------------------------------------------------------------------ 1º O primeiro BUG comum em todos os otserv é o duplicate Uniqueid , ou seja existe mais de um ID no mapa. Imagem do ERRO: Resolvendo: ------------------------------------------------------------------------------ 2º O segundo BUG comum é o tão famoso Connot Find "Monster" , o erro acontece pelo simples fato de existir o MONSTRO no mapa Porém não existir na pasta MONSTERS do seu OTSERV Resolvendo: 1º OPÇÃO. Considera a mais chata de todas 2 OPÇÃO. Para os Preguiçosos 3º OPÇÃO. Complexa e chata 4º OPÇÃO. Utilizando a 3º Opção ------------------------------------------------------------------------------ Em Breve Mais Tutoriais Retirando os Bugs Tem BUG no seu Executavél , mande que eu faço um Tutorial Gostou dos Tutoriais? Não Custa nada Reputar1 ponto -
Como Se Tornar Expert Em Otservers
Cavalchuki reagiu a Omega por um tópico no fórum
--> Nesse tutorial, mandarei links de outros tutoriais sobre vários assuntos de ot. Leia todos e se torne um expert <-- OBS : Para seguir os tutoriais citados, você deve ter algum conhecimento sobre otservers ou prestar bastante atenção. 1-Vamos começar com um tutorial bem simples que achei, o a-b-c do ot server : Tutorial : A-b-c do Ot Server De Profissional. 2-Agora, um tutorial para criar seu servidor : Tutorial : Otserv - Criando De Yurez700. 3-Agora vamos começar a parte mais pesada, vamos aos scripts, para começar um tutorial meu(xD) : Tutorial : Mini-tutorial De Comandos Por Omega Blueheaven. 4-Agora uma introdução ao script de monstros : Tutorial : [fixado]tutorial Sobre Monstros Por tibiaa4e. 5-Agora outro tutorial meu, para aprender a editar monstros, fazendo seu trainer : Tutorial : Fazendo Seu Trainer Por Omega Blueheaven. 6-Agora um tutorial de NPCs, do famoso Heitorzin : Tutorial : Super Tutorial Sobre Npc Por Heitorzin. 7-Um tutorial mais complicado, sobre novas quests : Tutorial : Aprenda A Fazer Novas Quests Por Rafix. 8-Um tutorial muito abrangente, sobre todos os scripts, vale a pena ler : Tutorial : Quer Aprender A Ser Scripter? Por Sir Picaralhos. 9-Um tutorial simples, com alguns erros, mas que vale a pena ser visto : Tutorial : Editando O Config.lua Por buster287 10-Um tutorial de actions, que é uma parte bem complicada : Tutorial : Tutorial De Action Postado por Fagunz, feito por Skoll. 11-Um tutorial sobre quase tudo, enorme, imensamente bem explicado : Tutorial : Como Criar Serv, ip Fixo, config.lua E Net Dividida De iguinho deb. [Tutorial Bônus] - Achei um tutorial muito bom de map editor, então não posso deixar de adicioná-lo : Tutorial : Conhecendo Seu Map Editor Por Andrew_. Terminamos por aqui. PS: Não quer seu tutorial aqui? Me avise que eu tiro. Quer seu tutorial adicionado aqui? Me avise que tentarei encaixa-lo aqui. A pedidos, vou botar links para baixar OTs : PvP of speedy, postado por Ventura Evolutions 0.7.8, postado por malucoo - créditos : Xidaozu Sphere Server 7.92, postado por Addict - créditos Ivan Otserver 8.0, postado por Addict - créditos desconhecidos Download do IP Changer 8.0 Erros? Link ruim? Avisem por favor. Escaneiem antes, esses links foram postados por outros usuários, apesar de eu tenha checar os comentários sobre o download. Pouquíssimas chances de conter vírus.1 ponto -
[Movements / Creaturescripts] - { Vip Items System }
kelvinvictor reagiu a jhon992 por um tópico no fórum
Hoje vamos criar um Sisteminha para que só jogadores vips possam usar determinados items! Vamos denominar esse sistema de [Vip Items System]. Então vamos começar com a brincadeira! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemvip" sem aspas, abra-o e cole: local storageVIp = 55555 -- mude a storage vip, conforme a storage do sistema vip do seu otserv! function onEquip(cid, item, slot) if getPlayerStorageValue(cid, storageVIp) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players vip podem usar essa arma!") return FALSE end return TRUE end Agora vai em data/movements/movements.xml abre e adicione a tag: <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemvip.lua"/> E se quiser adicionar mais armas vip, sóh duplica a linha acima e muda o id do item e o slot! Tipos de Slots: head armor legs hand shield ring necklace feet pickupable ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora vamos fazer um script para que quando a vip acabe, o item saia do slot! Abra data/creaturescripts/scripts e duplica um arquivo, renomeia para "itemlogin" sem as aspas e nele cole: function onLogin(cid) itensVip = { "2408", "8850", "7413" } -- itens vips if (getPlayerStorageValue(cid, 55555) <= 0) then for i=0, #itensVip do for b = 1,9 do if (getPlayerSlotItem(cid, b) == itensVip[i]) then doPlayerRemoveItem(cid, itensVip[i]) local bag = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bag, itensVip[i], 1) end end end end return TRUE end E por último, abra data/creaturescripts/creaturescripts.xml e cole a tag: <event type="login" name="ItemLogin" event="script" value="itemlogin.lua"/> Pronto, é isso aew. Terminamos nosso [Vip Items System]!1 ponto -
Olá Galera Xtibiana, Estou tentando aprender as técnicas de fazer sprites, ainda sou iniciante mais gostaria da opinião de vocês p/ poder melhorar...1 ponto
-
Matemática + Lua
RigBy reagiu a Demonbholder por um tópico no fórum
Matemática + LUA Faaaala galera! Tudo bem? Espero que sim, pois precisarão de muita atenção para entender algumas partes deste tutorial. A matemática é algo que nos acompanha no dia-a-dia, realmente muito importante, principalmente na programação. É indiscutível e concordável entre todos os programadores que um dos fatores de um bom profissional da área é o domínio da matemática! Bom, este tutorial vai ser para mostrar um pouco apenas da importância desta na linguagem LUA, ainda que se você tem experiência, provavelmente já percebeu isto. Sinais matemáticos simples Começando com os sinais matemáticos, o básico de lua e da matemática, são eles: + Soma - Subtração * Multiplicação / Divisão ^ Exponenciação % Módulo Onde o módulo é definido como: x % y = x – math.floor(x/y)*y A raiz quadrada pode ser definida como: x^(1/2). Pode-se chegar ao valor da raiz cúbica deste jeito: x^(1/3) . E assim por diante. Os sinais de comparação também são básicos em lua, ainda sim, são bem importantes e são usados para comparar dois valores numéricos (exceto == e ~= que podem comparar qualquer valor). Porcentagem Porcentagem é bastante usada em lua, pois é um artifício a ser usado em várias funções que envolvem valores numéricos. A porcentagem não é nada mais que regra de três, exemplo: 100% - 200 25% - x Neste caso, temos o valor de cem por cento e queremos o valor de vinte cinco por cento. Para isso, cruzamos os valores. Então a seguinte conta é feita: 100x = 5000 x = 5000/100 x = 50 Logo, 25% de 200 é 50. tonumber Existe uma função em lua, que tenta fazer a conversão de alguma string para valor numérico, esta função é chamada de tonumber. É uma função clássica de lua, onde ela faz a conversão, de uma string, para um valor numérico, por exemplo: tonumber(“2”), ela converte para 2. Simples, no entanto útil. Vamos usar dando um exemplo de Ot Server. Em um comando de talkaction, os parâmetros são strings, mesmo se forem números, assim, para compará-los com outros números, é necessário esta conversão. Para curiosidade, a função tostring faz o inverso, exemplo: tostring(2), retorna “2”. Funções math Para mostrar a importância da matemática em lua e em outras programações, existem as funções math que são funções matemáticas ou diretamente relacionadas a ela. Sinceramente eu não domino todas, então vou explicar as mais importantes por agora, são elas: Math.ceil Math.deg Math.exp Math.floor Math.ldexp Math.log Math.log10 Math.modf Math.pi Math.pow Math.rad Math.random Bom, estas serão as funções explicadas neste tutorial, onde eu não explicarei as funções de seno, cosseno e tangente para não deixar o tutorial uma apostila. Primeiro, antes de começar a explicar estas funções, vou explicar o que seria um logaritmo, explicando como resolver-lo por definição, explicar o Número de Euler e explicar o que é um radiano. Logaritmo: Logaritmo é um conteúdo do ensino médio considerado um tanto complicado. Portanto, ensinarei apenas o método da resolução pela definição, vamos lá: Um logaritmo contém três partes, são elas a base, o expoente e o próprio logaritmo. Dado o logaritmo abaixo: Log100 = x 10 A base é 10, x é o expoente e o logaritmo é log100. A conta deve ser feita deste jeito: Base elevada ao expoente é igual a logaritmo. Ou seja x 10 = 100 x = 2 Pronto, o logaritmo de 100 na base 10 é 2. Esse é o método da definição do logaritmo. Número de Euler: O número de Euler é um número dado em homenagem a um matemático chamado Leonard Euler, suíço, nascido no século XIII. É um número irracional, aproximadamente é 2,718281828459045, ou, às vezes apenas 2,718281828459. O número de Euler é comum ser chamado de e. Também é à base do logaritmo natural. Radiano: Um radiano é a unidade de medida no Sistema Internacional de Unidades de um ângulo plano. Usando um circulo como exemplo, nós teríamos o eixo da circunferência, sendo a circunferência a linha traçada em volta do circulo. A distancia desde o eixo deste circulo até a circunferência é o raio. Quando a distancia entre duas linhas traçadas a partir do eixo até a circunferência for igual ao raio, o ângulo entre estas duas linhas vai ser 1 radiano. É importante saber que 1 radiano é, aproximadamente, 57.295779513082º. Math.ceil Explicado como funcionam os logaritmos, um radiano e o número de Euler, vamos começar explicando as funções matemáticas. O math.ceil faz uma abreviação de qualquer número decimal, arredondando este para o próximo numero inteiro maior que ele. Usamos assim: math.ceil(1.5), ele retornará 2. Portanto, o math.ceil retorna o inteiro maior que o número decimal em seu parâmetro. Exemplos: Math.ceil(7/2) - 4 Math.ceil(16/3) – 6 Math.deg O math.deg faz a conversão de um ângulo dado em radianos para grau. Por exemplo, 1 radiano é, aproximadamente, 57.295779513082º. Exemplos: Math.deg(2) - 114.59155902616º Math.deg(4) - 229.18311805233º Math.exp Considerando que o número de Euler é chamado de e, esta função faz o número de Euler elevado a um expoente x. Usando o math.exp(x), ele eleva o e na potencia de x. Por exemplo, math.exp(x) faz a seguinte operação: x e Exemplos: Math.exp(2) - 7.3890560989307 Math.exp(10) - 22026.465794807 Math.floor O math.floor é semelhante ao math.ceil, ele ignora os valores fracionários de números decimais e considera apenas o valor integral. No entanto, esta função arredonda o número para um valor menor, inteiro, que este. Por exemplo: math.floor(1.5), retorna 1. Exemplos: Math.floor(20/3) – 6 Math.floor(9/2) – 4 Math.ldexp Esta função é originada de uma fórmula, contendo dois parâmetros. A função eleva o número 2 a potencia do segundo parâmetro, feito isso, o multiplica pelo primeiro parâmetro. Por exemplo, math.ldexp(5, 3), primeiro é elevado 2 na potencia 3 e depois multiplicado por 5. 2³ = 8 8*5 = 40 Math.ldexp(5, 3) = 40 Exemplos: Math.ldexp(10, 7) = 1280 Math.ldexp(40, 2) = 160 Math.log Ao contrário do que o senso comum diz, esta função não lhe permite escolher um logaritmo e retornar o expoente a qual sua base deve ser elevado para ser igual e ele, no entanto, retorna a quanto o número de Euler deve ser elevado para que resulte no seu logaritmo. Por exemplo, math.log(148.41315910258), retornará 5, pois 2,718281828459045 elevado na 5º potencia é igual a 148.41315910258. Definição do logaritmo acima: Log148.41315910258 = x 2,718281828459045 x 2,718281828459045 = 148.41315910258 x = 5 Math.log10 Esta função é uma função relativamente simples comparada com a de cima. Pois ao invés de assumir o número de Euler como base do logaritmo, ela assume 10 como esta. Por exemplo: math.log10(100), seria processado assim: Log100 = x 10 x 10 = 100 x = 2 Exemplos: Math.log10(1000) – 3 Math.log10(0.1) – (-1) Math.modf Esta é outra função simples de se compreender, ela retorna dois valores, o primeiro é a parte intregal do parâmetro e o segundo é a parte fracionária. Dado o exemplo: math.modf(1.5), ele retorna primeiro 1 e depois 0,5 pois 1 é a parte integral do número e 0,5 é a parte fracionária. Exemplos: Math.modf(7.5) - 7 & 0,5 Math.modf(92.8) – 92 & 0,8 Math.pi A função retorna o valor de PI é um número como o número de Euler, ou seja, um número importante e único na matemática. É usado para medir várias figuras geométricas. É referente a letra p no alfabeto grego, e tem o valor aproximado de: 3,14159265 Math.pow A função representa a seguinte conta: y x Ou seja, x elevado na potencia y, onde x é o primeiro parâmetro e y o segundo. Por exemplo, math.pow(2, 3) resulta 8. Exemplos: Math.pow(3, 2) - 9 Math.pow(5, 3) – 125 Math.rad É a função contrária de math.deg, faz a conversão de um ângulo dado em graus para radianos. Por exemplo, 1º é aproximadamente, 0.01745329 radianos. Exemplos: Math.rad(30) - 0.5235987755983 Math.rad(360) - 6.2831853071796 Math.random Para finalizar, a função math.random escolhe um número inteiro entre o arredondamento do primeiro parâmetro e o arredondamento do segundo. Sendo este arredondamento semelhante ao math.floor. Por exemplo, math.random(1, 5), processaria o seguinte: 20% - 1 20% - 2 20% - 3 20% - 4 20% - 5 É importante ressaltar que lua é uma linguagem semi-randomica. Exemplos: Math.random(1, 100) Math.random(5, 18) Fontes: Vou colocar aqui as fontes de onde eu recorri para escrever tudo isso acima: Manual Lua Wikipédia Logaritmo Wikipédia Radiano Wikipédia Número de Euler Tutorial exclusivo XTIBIA Bom, é isso, o tutorial foi feito inteiramente por mim, espero que gostem e aproveitem, até mais. Este tópico recebeu destaque em nosso portal!1 ponto -
Lista De Efeitos 8.54 E Como Usá-Los
Exgamesjoao reagiu a Antharaz por um tópico no fórum
Como todos sabem, saber qual é o número do efeito que você deseja é difícil... ainda mais com tant lista de efeitos desatualizadas por aew. :fist: Então resolvi fazer uma lista atualizada de 68 efeitos (8.54) que está abaixo: Para usar os efeitos basta colocar o comando doSendMagicEffect(posição,efeito). Aonde posição é as coordenadas aonde o efeito será aplicado e o efeito é o próprio efeito. Vamos supor que eu queira usar o efeito de fumacinha no player como se tivesse dado algo errado quando usasse um item em outro. Eu colocaria assim: function onUse(cid, item, frompos, item2, topos) doSendMagicEffect(cid,2) return FALSE end Caso não funcione o código acima por algum motivo, troque o cid do doSendMagicEffect por frompos.1 ponto -
[Gesior Acc] Gesior Account Maker 0.3.6 Fala galera eu estava andando pelo XTibia e não encontrei de jeito nenhum o Gesior ACC Maker atualizado, então resolvi compartilhar ele com a comunidade XTibiana... =) ChangeLog: OBS: Ele é compatível com todos os Servidores TFS! Imagem: Downloads: 4Shared: Clique aqui. SpeedyShare: Clique aqui. RapidShare: Clique aqui. Tutorial de instalação! Os créditos vão para a CipSoft e o pessoal da OTland que criaram o WebSite. Abraços, Doidin.1 ponto
-
é um script que muda de mapa a cada X horas(ou minutos) Creditos: Vodkart e Demonbholder que me ajudo *-* na pasta mods crie um arquivo.xml e renomeie para ChangeMap.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> <config name="map_func"><![CDATA[ info = { [0] = 1, [1] = 3, [2] = 4 } storage = 789520 ]]></config> <event type="login" name="Check Map" event="script"><![CDATA[ domodlib('map_func') function onLogin(cid) if getGlobalStorageValue(storage) == -1 then setGlobalStorageValue(storage, 0) end doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(storage)])) return true end ]]></event> <globalevent name="ChangeMap" interval="3600" event="script"><![CDATA[ domodlib('map_func') function onThink(interval, lastExecution) doBroadcastMessage('The map will be changed again in 1 hour.') setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0) for _, pid in ipairs(getPlayersOnline()) do doPlayerSetTown(pid, info[getGlobalStorageValue(storage)]) doRemoveConditions(pid, true) doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end return true end]]></globalevent> </mod> Explicação: No info é o id das town para adicionar mais mapas é só colocar uma virgula no último e adicionar o novo town_id [3] = 5, [4] = ?? e o tempo você muda nessa parte interval="3600" no caso está para 1 hora1 ponto
-
Pokemon Fire Dangerous
21359706 reagiu a Baaladerooh por um tópico no fórum
Bom galera vim aqui divulgar um ot de um amigo meu sou só um membro la por enquanto: Nome: Pokemon Fire Dangerous Xp : 999 Catch : great ball,super ball e master ball catch 100% Infelizmente é com hamachi mais é muito bom Surf,ride,fly,teleport tudo 100% Site:http://poke-fd.blogspot.com/ IP:5.144.0.36 agr é só 1 ip Sala do hamachi: PokeFIREDANGEROUS, PokeFIREDANGEROUS2, PokeFIREDANGEROUS3 Senha:123 Logo iremos colocar dedicado Por que entrar no Poke Fire Dangerous?Por que temos uma staff dedicada a fazer todo esforço possível para ajudar os players e fazer o server crescer,seja no que for duvidas ajuda se tiver algum staff on é só perguntar ou pedir,fazemos eventos diários se não conseguir ir não precisa se preocupar por que no minimo são 2 eventos por dia,colocamos pokes novos quase toda semana e muito mais para saber basta jogar Ja que n estou conseguindo postar a imagem pois esta dando formato invalido vou manda o link dela: http://imageshack.us...s/43/pokex.png/ Foram adicionados varios pokes como esses da print e: psyduck encapetado,magmortar,electivire,jirachi e muito mais para saber entre ja eu garanto que é mt bom Novos Pokes Adicionados: Shiny Moltres,Black Pikachu,Black Golem,Christmas Caterpie,,Christmas Snorlax,,Christmas Sell,Christmas Psyduck,,Christmas Digglet,,Christmas Jynx,Shiny Pidgey,Piplup,Porygon-z,Slowking,Piplup,Tangrowth e mais alguns e para ver é só entrar no site e ver a imagem ao lado e se entrarem no site votem na enquete que esta esta embaixo da imagem com os pokes novos Novos Pokes Adicionados(08/01/12):Staraptor,Staravia,Glaceon,Leafeon,Wailmer,Regirock,Sr. Piccolo Scyther,Registeel,Regigigas,Latios,Latias,Arceus,Deoxys,Chimchar e suas evoluções,Torterra,Grotle,Prinplup,Empoleon e Mismagius.Logo posto print com todos os pokes novos1 ponto -
[Featured Article] Retrospectiva De 2011
Lordfire reagiu a Gabriel Couto por um tópico no fórum
[Featured Article] Retrospectiva de 2011 "Devagarmente, 2011 está chegando ao fim. É tempo para nós Community Managers para sentar e observar o que aconteceu conosco durante esse ano, que teve altos e baixos, e com várias mudanças para o Tibia. Feito por AnyurCT ao XTibia.com No começo desse ano, nossos famosos líderes, Rainha Eloise de Carlin e Rei Tibianus de Thais, decidiram fazer mudanças nos seus castelos. Os dois pintores, Vad Inchi e Lou Toose quase perderam suas cabeças nessa competição, mas foram salvos pelos criativos Tibianos, que ajudaram as duas pobres almas com suas idéias. O Real Concurso de Pintura, que foi realizado com a ajuda de muitos de nossos fansites, rendeu duas pinturas incríveis, que podem ser admiradas nos castelos de Thais e Carlin nos dias de hoje. Feito por AnyurCT ao XTibia.com Enquanto Vad Inchi e Lou Toose esperavam desesperadamente por inspiração, as ilhas tibianas encararam novas crises, que mais uma vez, os bravos tibianos ajudaram. As bruxas do pântano precisavam de ajuda para proteger seu caldeirão e coletar ingredientes para misturar em uma bebida poderosa para evitar a ira dos espíritos malignos. Apenas 29 Mundos do Jogo tiveram sucesso no primeiro evento global "Bewitched" em Janeiro de 2011. Então, em Janeiro, vários tibianos estiveram ocupados em salvar vidas, salvar o mundo, e também masterizando trabalhos globais, como "Last Creep Standing" ou "A Pirate's Death to Me". Além disso, Janeiro foi o nascimento do War Horse e Crystal Wolf. Essas montarias foram as mais votadas em uma enquete no final de Janeiro, e vieram para a vida nesse ano. Feito por AnyurCT ao XTibia.com Após todo esse trabalho extenuante de Janeiro, Fevereiro apareceu com uma visão diferente. O divertido evento global "A Piece of Cake" apareceu pela primeira vez. Nesse evento, Golems de Bolo invadiram o Tibia. Então, ao invés de lutarem contra criaturas horripilantes e acabarem cobertos de sangue, tibianos lutaram contra monstros de bolo doce neste evento, terminando revestidos de açúcar. Além disso, encher-se com o bolo até não agüentar mais fez parte deste evento. Então, provavelmente, alguns tibianos ainda se sintam um pouco enjoados quando vêem bolos, mesmo até hoje. Fevereiro foi também um mês de muita sorte para alguns tibianos. Em nosso sorteio no Fevereiro Fabuloso, 50 vencedores sortudos ganharam um ano inteiro de premium time de graça! Imagem Ilustrativa de Fevereiro Depois de todo o jogo e a comilança de bolos, era hora de fazer algum trabalho mais sério de novo. Em março, o cliente Flash mostrou o seu rosto pela primeira vez. Para esta fase de testes iniciais, 371 jogadores de Tibia foram escolhidos para experimentar os novos recursos do cliente Flash em primeira mão. Durante os testes, mais de 1.800 posts foram escritos na fórum de testes privado. Nós recebemos um feedback muito útil que ajudou muito para conseguir o cliente Flash em um estágio em que poderia mais tarde ser lançado em sua forma beta. Os testes e o desenvolvimento do cliente Flash Beta ainda estão em curso hoje, e e nós realmente apreciamos a sua ajuda e feedback! Feito por AnyurCT ao XTibia.com Você se lembra do CM Ogrey? Ele chocou o mundo Tibiano, anunciando sua renúncia no dia primeiro de abril. Apesar de muitas pessoas estarem convencidas de que esta era uma piada de abril - não foi. Ogrey nos deixou em abril, antes do patch de primavera. O patch de primavera continha muitas mudanças estruturais, principalmente na preparação para o cliente Flash. A maioria destas mudanças estruturais passaram despercebidas por Tibianos, com exceção de um, o que incomodou a muitos. Os slots de mão e de flecha receberam restrições. Além dessa decisão controversa no design do jogo, o patch de Primavera também ajudou bastante a prevenção de spam em alguns fóruns sobre o Tibia, já que o limite de nível de lançamento para jogadores que nunca tiveram Premium time ou pago por um serviço extra foi aumentado para, pelo menos, level 21. Também o sistema de comunicação foi alargado, incluindo agora os relatórios de assinatura, bem como posts do fórum. Feito por AnyurCT ao XTibia.com Enquanto nós dissemos "adeus" a um CM em abril, dissemos "Olá" para outro CM em maio. Tjured juntou-se à nossa equipe e, em seguida, fez sua primeira aparição no Auditório. Maio, sendo o mês da primavera no hemisfério norte, implicando o renascimento da natureza e de toda a vida, encaixou-se muito bem para um outro evento global pela primeira vez este ano. Em "Demon's Lullaby" mesmo os guerreiros mais resistentes tiveram que mostrar alguma experiência como babá e cuidar de um bebê demônio. No final de maio, o cliente Flash fez outra aparição em um teste beta aberto. Devido a algumas dificuldades inesperadas com o desenvolvimento, anunciamos a decisão de que o cliente Flash seria lançado em uma versão beta primeira versão, que depois realmente aconteceu logo após o segundo teste, no início de junho. Feito por AnyurCT ao XTibia.com Junho foi um mês de celebração. Foi 10 º aniversário da CipSoft, e comemoramos juntos com todos vocês. No artigo em destaque de Junho, que introduziu-lhes vários funcionários, mostrou que suas ideias e convidou a todos para participar de um tópico no Auditório. Para comemorar a década de existência da CipSoft ainda, que patrocinou uma centena de anos do premium time, e espalhá-los entre os jogadores que estiveram conectados ao jogo durante esse tempo. 100 vencedores ganharam um voucher de premium time, a concessão de status de premium de graça por um ano inteiro. Também em junho, começamos a eliminar botters automaticamente detectados em vez de apenas bani-los, uma medida que foi muitas vezes solicitado por muitos jogadores. No entanto, a luta contra a fraude ainda está em curso desde que a situação não é satisfatória, ainda. Feito por AnyurCT ao XTibia.com Julho começou muito bem com o update de verão. Trouxe uma característica totalmente nova para Tibia: mudanças no mundo. Agora está parcialmente em suas mãos para moldar o seu mundo de jogo. Em uma pesquisa que nos disse sobre o mudança no mundo mais favorita, e as três primeiras são: as estações de cavalo, as guerrasdemônio, e febre de pântano. É provavelmente seguro dizer que no futuro do Tibia, muitos mais mudanças no mundo virão para a vida. Imagem Ilustrativa das Mudanças de Julho. Infelizmente, o update de verão também veio com dois bugs que causaram muitas discussões, suor e correção de bugs para funcionários CipSoft: Do nada,um dos itens de fansite simplesmente mantidos em um respawn no templo de Thais, e não demorou muito para vários desses itens serem pegos por vários jogadores. O outro bug permitia que jogadores ilegalmente recebessem pontos de experiência. Mesmo que um reset dos servidores pudesse ser evitada, a palavra "reset" foi provavelmente a mais dominante em nossos fóruns durante esse tempo. Item Citado nos Bugs. Também em julho, uma nova funcionalidade para o cliente Flash Beta foi implementada. Mapas do cliente stand-alone poderiam finalmente ser importados. Feito por AnyurCT ao XTibia.com Agosto foi um dos meses mais calmos em 2011. Isso não significa que nada de especial estava acontecendo. Por exemplo, em agosto que era hora de cozinhar,tempo para ajudar Jean Pierre a preparar refeições deliciosas. Além disso, o Movie Tibia Awards estava funcionando naquele momento, que fora organizado por Tibiopedia.pl, e apoiada por vários outros fansites. Feito por AnyurCT ao XTibia.com No mês seguinte foram fornecidas mais ação e mais notícias de novo, no entanto. Setembro começou com o "Devovorga". Com 72 mundos de jogo concluindo com sucesso este evento em 2011. Além disso, em setembro os Server saves foram sincronizados, e o patch de outono com uma renovada Grizzly Adams foi introduzido, algo que estava na lista de desejos de muitos jogadores por algum tempo. Este patch também trouxe o board do jogo, que, de acordo com uma pesquisa, é pelo menos, em parte, interessante para cerca de três quartos de todos os jogadores. Além disso, nossos três assistentes Furb of Fun, Feiz of Power and Fern of Nature competiram mais uma vez este ano sobre quem tem mais seguidores no evento global "Colours of Magic". Setembro terminou com a campanha Grab a Draptor. A campanha, criticada por alguns e amado por outros tantos. Amada especialmente por aqueles, que agora felizmente passeiam no pôr do sol com seus Draptor Shadow (Montaria). Feito por AnyurCT ao XTibia.com Outubro começou com o evento global "Vintage Autumn anual". Neste caso, você tinha que reunir e processar winterberries para o Combinado Mágico da Winterberry Society. Somente 13 mundos de jogo conseguiram alcançar o objetivo neste evento em 2011, e por isso ganhou-se uma temporária adição no efeito das poções de vida e de mana. Em 20 de outubro, um sistema de tutor novo foi introduzido. Agora é possível dar "Obrigado!" "para respostas úteis de outros jogadores. Com o suficiente número de "Obrigado!", você vai se tornar um tutor, e as estrelas irão aparecer ao lado de seu nome do personagem no fórum, refletindo sua natureza útil. Outubro foi também o mês do Halloween, de modo que o Halloween Hare e a Mutated Pumpkin completaram esse mês e infelizmente ter uma surpresa muito desagradável para tibianos: Uma limitação que não estava em vigor no ano anterior para as mortes foi implantada no evento. Pedimos desculpas mais uma vez pela decepção para muitos de vocês com este evento. Feito por AnyurCT ao XTibia.com Em novembro, após a mudança para horário de verão na Alemanha, você pode realmente sentir que os dias estão se tornando mais curtos e as noites ficam mais longas, as temperaturas caem e a vida parece estar de congelamento. Este mês é simplesmente perfeito para o evento Lightbearer. Em 2011, este evento teve lugar pela terceira vez já, e 40 mundos conseguiram manter as bacias de luz sagrada queimar por quatro dias seguidos. Para além deste evento, os community managers tinham muita diversão em nossos escritórios até aquecida com o Concurso de Legenda. Houve algumas legendas realmente boas para a imagem que tínhamos criado. Obrigado por nos fazer rir durante uma hora tão difícil. Feito por AnyurCT ao XTibia.com Agora é dezembro, e como todos os anos, dezembro vai trazer a atualização de inverno! Esperamos que você esteja gostando do teasers que já foram publicados e esperamos que tenham um presente de Natal agradável com essa atualização! Imagem Ilustrativa ao Update de Inverno de 2011. Essa foi a nossa rápida retrospectiva de 2011. É claro, é meramente impossível incluir todos os pedaços de um ano inteiro em tal artigo. No entanto, esperamos que você aproveite esta viagem curta para trás com a gente. Nós também gostaríamos de dizer "Obrigado" a todos vocês que nos apoiaram em 2011, que não se cansam de nos dar um feedback uma e outra vez. Nós nos esforçamos para melhorar, em todos os tópicos abertos - seja a luta contra o desbalanceamento de vocações, e PvP, e precisamos da sua ajuda e feedback para fazê-los. Obrigado por estar aqui com a gente! Feito por AnyurCT ao XTibia.com No final deste ano, agora que você leu essa retrospectiva, quais foram a suas impressões mais memoráveis de 2011? O que você mais gostou neste ano? Feito por AnyurCT ao XTibia.com Se juntar a nós em lembrar 2011! Seus Community Managers." Veja o Tópico Oficial: http://www.tibia.com...estnews&id=1893 Participe da Discussão sobre 2011: http://www.xtibia.co...53#entry1162553 Traduzido por AnyurCT ao XTibia.com Qualquer erro, me avisem para que eu possa revisar!1 ponto -
Onde Fica As Sources Do Meu Ot?
sabrina9292 reagiu a Fir3element por um tópico no fórum
Sim, se quiser me envie por MP como é certinho o que você quer fazer, quero aprender a mexer mais nessas funções ^^1 ponto -
[Pokémon] Pack Novas Box
randerjp reagiu a BrunooMusic por um tópico no fórum
Ola galera do xtibia, criei minha conta para comentar e trazer novos conteudos ao :xtibiasmile: entao vamos la ! Hoenn Box: Johto Box: Colored Box [shiny Box]: Box 5: TUTORIAL DE COMO ADICIONAR: 1- Abra seu DAT EDITOR, carregue seu DAT & SPR 2- Vá em FILE > IMPORT > SPRITE > [vou dar de exemplo a box 5] e abra o BOX5.png 3- agora vá em FILE > NEW > ITEM > vá no 0 e no lado direito tem umas sprites, abaixe tudo e clique na sua sprite [vai ser a ultima~] 4- Aperte insert 5- Salve e feche ! 6- agora e so adicionar no item editor e no items.xml [procure algum tutorial, axo que no xtibia aqui mesmo tem] 7-acrescente ou crie um novo arquivo .lua e coloque os pokemons de acordo com o nome da box ! Programas Usados: Paint Base da box: Box 3 [PxG]1 ponto -
[Duvida] Do Site E Jogo
ThiagoMartinsMR reagiu a SkyDangerous por um tópico no fórum
Leia as regras. Aqui é seção de tutoriais e não de dúvidas. Cuidado: Serão alertados os usuários que postarem dúvidas, pedidos ou qualquer outro tipo de conteúdo que não esteja de acordo com as regras acima.1 ponto -
Verifica se no arquivo, data/creaturescripts/script/login.lua tem uma parte assim: doPlayerSetLossSkill(cid, 0) Se encontrar exclua! Verifica tambem se no teu creaturescripts.xml não tem nenhum arquivo do tipo onDeath ou PrepareDeath, se tiver vaia no arquivo correspondente e procure por essa mesma linha de codigo: doPlayerSetLossSkill(cid, 0) E se possuir essa linha, que provavemente é o erro, simplesmente exclua a linha.1 ponto
-
site utilizado: - ModernAAC Trunk R265 Informações: - é o seguinte eu gostaria que esse sistema teleportasse o player para o templo, o player tem que estar deslogado, e so pode usar 1 vez por dia e que conte por conta e n por player, que tambem aparessa o tempo restante para utilizar novamente. Porfavor ajuda ai!1 ponto
-
Me matei um pokin pra faze esse script, mais ta aew a parte que eu fiz pelo menos. Fiz apenas a parte de talkactions que é mais a minha aréa, dae a parte das quest's tens que encontrar outro scripter pra faze pra ti. Vai em "data/talkactions/talkactions.xml" e poem a tag: <talkaction words="!reset" script="reset.lua"/> Agora entre na pasta "talkactions/scripts" duplique algum arquivo dessa pasta e renomeie para "reset" sem as aspas, e nele cole: -- <Script by jhon992> -- function onSay(cid, words, param, channel) if (param ~= "mixedpromo" and param ~= "spinpromo" and param ~= "sacredpromo" and param ~= "supremepromo" and param ~= "forgottenpromo" and param ~= "novapromo") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Incorrect parameter.") return TRUE end local config = { mixedlvl = 10000, -- level para resetar mixed spinlvl = 60000, -- level para resetar spin sacredlvl = 95000, -- level para resetar sacred supremelvl = 310000, -- level para resetar supreme forgottenlvl = 550000, -- level para resetar forgotten novalvl = 715000, -- level para resetar nova vocationMixed = 5, -- id vocação mixed vocationSpin = 6, -- id vocação spin vocationSacred = 7, -- id vocação sacred vocationSupreme = 11, -- id vocação supreme vocationForgotten = 12, -- id vocação forgotten vocationNova = 13, -- id vocação nova lvlreset = 8, -- level apos resetar primeiras vocações lvlSacred = 30000, -- level apos resetar vocação sacred lvlNew = 100000, -- level apos resetar útimas 3 vocações player = getPlayerGUID(cid), -- não mexa! pz = "no", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") premium = "no" -- se precisa ser premium account ("yes" or "no") } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You should be in the protection zone for use.") return TRUE end if(config.premium == "yes") and (not isPremium(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You can not use in battle.") return TRUE end if (param == "mixedpromo") then if (getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 4) then if (getPlayerLevel(cid) >= config.mixedlvl) then doPlayerSetVocation(cid, config.vocationMixed) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.mixedlvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end if (param == "spinpromo") then if (getPlayerVocation(cid) == 5) then if (getPlayerLevel(cid) >= config.spinlvl) then doPlayerSetVocation(cid, config.vocationSpin) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.spinlvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end if (param == "sacredpromo") then if (getPlayerVocation(cid) == 6) then if (getPlayerLevel(cid) >= config.sacredlvl) then doPlayerSetVocation(cid, config.vocationSacred) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlSacred..", `experience` = 0 WHERE `id` = "..config.player) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.sacredlvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end if (param == "supremepromo") then if (getPlayerVocation(cid) == 10) then if (getPlayerLevel(cid) >= config.supremedlvl) then doPlayerSetVocation(cid, config.vocationSupreme) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlNew..", `experience` = 0 WHERE `id` = "..config.player) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.supremelvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end if (param == "forgottenpromo") then if (getPlayerVocation(cid) == 11) then if (getPlayerLevel(cid) >= config.forgottenlvl) then doPlayerSetVocation(cid, config.vocationForgotten) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlNew..", `experience` = 0 WHERE `id` = "..config.player) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.forgottenlvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end if (param == "novapromo") then if (getPlayerVocation(cid) == 12) then if (getPlayerLevel(cid) >= config.novalvl) then doPlayerSetVocation(cid, config.vocationNova) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.lvlNew..", `experience` = 0 WHERE `id` = "..config.player) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You need level "..config.novalvl..".") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return TRUE end end return TRUE end Deixei bem configurável pra você configurar como se achar melhor. Explicando como funciona: Resolvi fazer tudo em um script só, então não tinha como eu por para identificar apenas aqueles parâmetros que tu queria, se eu fizesse daquele jeito teria que fazer vários scripts diferentes. Então vai funcionar da seguinte forma, tens que falar "!reset mixedpromo" ou "!reset spinpromo" sem as aspas, e assim por diante. Espero ter te ajudado um pouco, e é isso aew!1 ponto
-
Aew, boa... até eu vou testar esse script... gostei da idéia... ty1 ponto
-
Pokedex Sistem
HeelSpy reagiu a vitorszvitim por um tópico no fórum
sim quando você ustilizar o pokedex encima do seu character aparecerá os pokemons que você deu dex1 ponto -
Aqui Ensino Como Criar Um Topico Macho
MaginusDarklord reagiu a iagopuma por um tópico no fórum
topico lixo ban no autor pls @leo94 u are haxy neh/1 ponto -
Como Faço Para Mudar Items Iniciais Gesior 0.3.5
JuninhoSimao reagiu a Natanael Beckman por um tópico no fórum
Cara vai na pasta mods e ver se tem algo relacionado a isso firstitems se tiver deleta eu estava com esse problema porem sulicionei mais enqaunto n solucionava fiz um quest bem no templo. function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, 19881) < 1 then doPlayerSendTextMessage(cid,22,"Voce acabou de conseguir os FristItems!") local bag = doPlayerAddItem(cid, 2000, 1) doAddContainerItem(bag, 2152, 50) doAddContainerItem(bag, 2389, 1) doAddContainerItem(bag, 2190, 1) doAddContainerItem(bag, 2182, 1) doAddContainerItem(bag, 2525, 1) doAddContainerItem(bag, 2383, 1) doAddContainerItem(bag, 2430, 1) doAddContainerItem(bag, 2643, 1) doAddContainerItem(bag, 2457, 1) doAddContainerItem(bag, 2647, 1) doAddContainerItem(bag, 2463, 1) doAddContainerItem(bag, 2789, 100) setPlayerStorageValue(cid, 19881, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.") end return TRUE end <action uniqueid="19881" event="script" value="quests/templeinicio.lua"/> Actions.1 ponto -
[Encerrado] Qual O Melhor Semi-Dedicado ?
neguinholove reagiu a shadowdemon por um tópico no fórum
Ai galera, qual o melhor semi-dedicado para se começar um server ?1 ponto -
Me Ajudem.
Henrique Moura reagiu a SkyDangerous por um tópico no fórum
ok. vamos ver quem está errado. Reportado para Moverem, area correta. -= Mi Mi Mi, acha que o fórum é seu para postar onde quiser? Se liga, ninguém ajuda pessoa mal educada não. Att.0 pontos -
Me Ajudem.
Gabriel Couto reagiu a olimpiamarkin por um tópico no fórum
Ninguem gosta de você, excluido do mundo. Só o nick do xtibia dele ja dis tudo. N E R D-2 pontos