-
Total de itens
56 -
Registro em
-
Última visita
Tudo que gahgah postou
-
agora esta funcionando como eu queria, muito obrigado a todos que ajudaram.. o +rep de hj vai para quem montou o script, Roksas.. e amanha dou +1 Rep para o Skymagnum e Slicer.. todos foram importantes para o sucesso do script, thanks!
-
erro denovo: [17/05/2013 18:58:52] [Error - CreatureScript Interface] [17/05/2013 18:58:52] data/creaturescripts/scripts/advance_1k.lua:onAdvance [17/05/2013 18:58:52] Description: [17/05/2013 18:58:52] data/creaturescripts/scripts/advance_1k.lua:12: attempt to compare number with nil [17/05/2013 18:58:52] stack traceback: [17/05/2013 18:58:52] data/creaturescripts/scripts/advance_1k.lua:12: in function <data/creaturescripts/scripts/advance_1k.lua:8>
-
deu esse erro: [17/05/2013 18:29:41] [Error - CreatureScript Interface] [17/05/2013 18:29:41] data/creaturescripts/scripts/advance_1k.lua:onAdvance [17/05/2013 18:29:41] Description: [17/05/2013 18:29:41] data/creaturescripts/scripts/advance_1k.lua:8: attempt to call global 'getAccountStorageValue' (a nil value) [17/05/2013 18:29:41] stack traceback: [17/05/2013 18:29:42] data/creaturescripts/scripts/advance_1k.lua:8: in function <data/creaturescripts/scripts/advance_1k.lua:7>
-
esta funcionando e add o dia premium.. so que nao tem como add só 1 dia por ACCOUNT? se o player fizer 90 chars na mesma acc e pegar lvl 1k em cada char, ele vai add 1 dia de premium com cada char.. e acabar burlando o sistema donate vip.. n tem como? testei aqui com 2 char na mesma acc, peguei lvl 1k em cada char, e fico 2 days de premium na acc.
-
testei aqui, com texto nao esta funcionando.. e percebi que quando ultrapassa o lvl 1k de uma vez só, nao add o dia premium.. so quando pega o lvl 1k redondo e exato.. meu ot é exp alta, é quase impossivel o player pegar lvl 1k exato.. sempre ultrapassa, exemplo: 13:45 You advanced from Level 998 to Level 1017. testei varias vezes e só add o dia premium se pegar lvl 1k exato, se passar nao nao adciona.. oq pode ser? espero.
-
com esse script com msg, ele parou de funcionar, assim, nao add o dia de premium.. quando retirei o texto e o doPlayerSendTextMessage ai o script voltou ao normal.. oq sera que falto? aguardo
-
boa.. deu certo. agora vi com mais tempo. agora teria como colocar o texto quando upar o lvl para lvl 1000? -> "parabens pelo lvl 1000 voce ganhou 1 dia de premium" ou quando ele relogar, quando ele voltar ja mandar uma msg para ele avisando que foi add 1 dia de premium por conquistar o lvl 1000? assim fica mais organizado. espero.
-
opa.. fiz tudo aqui.. peguei 1k na mao mesmo.. e nao add a p.a, nao deu nehum erro no console, nem nada, apenas nao add o dia premium. oq pode ser? vou testar melhor quando chegar em casa.
-
ola galera, gostaria de saber se da para editar esses comandos feitos para mysql para funcionar em sqlite, segue o link: http://www.xtibia.com/forum/topic/158507-limpar-casas/ aguardo com urgência, quem ajudar ganha +REP
-
Hail XTibia, venho aqui postar um erro de NPC que acontece já faz um bom tempo, e gera muito lag no server pois sobrecarrega o console, não sei o que posso fazer para arrumar, se puderem me ajudar eu agradeço, como sempre +REP. Segue abaixo o erro, script do npc em questão e Print: ERRO: [22/12/2012 03:28:21] [Error - Npc interface] [22/12/2012 03:28:21] data/npc/scripts/loot.lua:onThink [22/12/2012 03:28:21] Description: [22/12/2012 03:28:21] (luaGetThingPosition) Thing not found [22/12/2012 03:28:21] [Error - Npc interface] [22/12/2012 03:28:21] data/npc/scripts/loot.lua:onThink [22/12/2012 03:28:22] Description: [22/12/2012 03:28:22] data/lib/032-position.lua:6: attempt to index local 'toPosition' (a boolean value) [22/12/2012 03:28:23] stack traceback: [22/12/2012 03:28:23] data/lib/032-position.lua:6: in function 'getDistanceBetween' [22/12/2012 03:28:23] data/npc/lib/npcsystem/npchandler.lua:559: in function 'isInRange' [22/12/2012 03:28:23] data/npc/lib/npcsystem/npchandler.lua:479: in function 'onThink' [22/12/2012 03:28:23] data/npc/scripts/loot.lua:8: in function <data/npc/scripts/loot.lua:8> SCRIPT NPC: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function thinkCallback(cid) local rand = math.random(1,100) if rand == 1 then selfSay('Buy Items!') end return true end function greetCallback(cid) return true end npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new()) PRINT: -- É complica pois quando não estou ADM o server não tem como dar /reload npcs ai o lag fica gigantesco. Versao no server: [8.60] Alissow Ots 4.11 Aguardo ajuda e como sempre +rep
-
Ola XTibia, gostaria de saber se tem como fazer uma Runa que de Paralyze so que total, exemplo, o player ataca a runa no target e ele trava completamente por 5 segundos (configuráveis), tendo a opçao dela funcionar apenas em players e nao em monstros, e quando a runa pegar o player soltar o texto " Paralyze ", entao ficaria: Travar o player 100% por 5 segundos (configuraveis) exausted para usar a runa denovo em alguns segundos Opçoes de atacar somente players ou monsters tambem Quando a runa acertar o player dar o texto " Paralyze " e se possivel: Quando a runa acertar o player dar Poison de -1000 Quando a runa acertar o player o deixar bebado (drunk) Seria perfeito para o PvP High Exp, como sempre dou +REP Aguardo.
-
Script esta perfeito, add a premium, qts dias o player quer, e tirando a moeda vip, 1 dia de premium = 1 moeda vip. Meu servidor 1 mes de vip (30 dias) sai por apenas 20 moedas vip, tem como agora por a fala de opçao para comprar 1 mes de vip por 20 moeda vip? o npc ja vende quantos dias o player preferir, so falta agora mesmo ele ter a opçao de vender 1 mes inteiro e cobrar 20 moedas vip, ex: player: 30 dias npc: quer comprar 30 dias de vip premium por 20 moedas vip? player: yes outro exemplo de dias: npc: vendo 1 a 15 dias de premium, cada dia e 1 moeda vip, tambem vendo 1 mes por 20 moedas vip, fale quantos dias deseja comprar player: 1 mes npc: deseja comprar 1 mes de premium por 20 moedas vip? player: yes ae no caso se o player quiser comprar 3 meses por exemplo, ae o npc vai cobrar 60 moedas vip. (20 moedas cada mes) resumindo e finalizando, o scrpt esta funcional e perfeito, apenas gostaria que o modificasse para limite maximo de dias 15, o player vai escolher quantos dias quiser ate 15 dias, cobrando 1 moeda por dia, e a segunda opçao é apenas para meses, 1 mes sera cobrado 20 moedas. aguardo.
-
intendi, para comprar a quantidade de dias q ele quer ele vai ter q falar !buypremium varias veses ate atingir a quantidade exata que o player qr de vip, ex: 1 dia = remover 1 moeda vip, ai para ele comprar 1 mes com 20 moedas vip, eu poderia fazer outro comando, unico para ele comprar 30 dias e remover apenas 20 moedas. agora daria para fazer compra de premium por NPC? dialogar com ele, ae teria q confirmar se ele realmente qr gastar as moedas vip com a premium, etc, provavelmente daria menos erros, ja que metade do server usa de todos os tipos de artificios para tentar se dar bem, capaz de usarem o comando e falar q compro dias errado so pra repor moedas, é complicado. aguardo & agradeço a ajuda, so estou esperando mesmo se é possivel criar npc e embutir tudo no script do npc, abraços.
-
Não funcionou, seguinte erro: [Warning - Event::loadScript] Event onDeath not found (data/creaturescripts/scripts/efeitodeath.lua) aguardo.
-
Ola XTibia, gostaria de um script de !buypremium que cobrasse em moeda VIP, porem com um grande diferencial, o player escolhe quantos dias colocar, ex: !buypremium 1 - 1 dia !buypremium 5 - 5 dias !buypremium 10 - 10 dias E por ai vai, quantos dias ele escolher, e é claro, cada dia é 1 moeda VIP, e 1 mes cobro 20 moedas VIP. Se tiver como fazer em NPC eu tambem agradeço, axo mais detalhado, enfim, peso ajuda para os dois, talkaction e 1 npc, vo guardar as duas opçoes, aguardo. Como sempre +REP para quem ajudar.
-
pedido Item Que Dar Mais Porcentagem Na Xp
pergunta respondeu ao Joaopedefeijao de gahgah em Scripts
so muda os id.. add em movements: <!-- Exp ring --> <movevent type="Equip" itemid="7697" slot="ring" event="script" value="expring.lua"> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="expring.lua"> agora va em scrips, copie qualquer um e renomeia para expring e cole: function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 15x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*15) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, '15x mais experiencia!') doPlayerSetExperienceRate(cid, 1) return TRUE end esse é do ring de 15x mais exp. para o ring de 30x mais exp coloca em movements: <!-- Exp ring2 --> <movevent type="Equip" itemid="8187" slot="ring" event="script" value="expring2.lua"> <movevent type="DeEquip" itemid="8187" slot="ring" event="script" value="expring2.lua"> agora va em scrips, copie qualquer um e renomeia para expring2 e cole: function onEquip(cid, item, slot) doTransformItem(item.uid, 8187, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 30x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*30) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 8187, 1) doPlayerSendTextMessage(cid, 22, '30x mais experiencia!.') doPlayerSetExperienceRate(cid, 1) return TRUE end testa ae.. so ir mudando os ID. -- Ajudei? +REPP -
pedido Item Que Dar Mais Porcentagem Na Xp
pergunta respondeu ao Joaopedefeijao de gahgah em Scripts
opa.. va em movements e add isso: <!-- Exp ring --> <movevent type="Equip" itemid="7697" slot="ring" event="function" value="onEquipItem"> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="expring.lua"> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="expring.lua"> agora va em scrips, copie qualquer um e renomeia para expring e cole: local rate = 1.5 function onEquip(cid, item, slot) if(item.itemid ~= 7697) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your exp rate + "..((rate - 1)*100).."%.") doPlayerSetExperienceRate(cid, rate) doTransformItem(item.uid, 7708 ) return true end return true end function onDeEquip(cid, item, slot) if(item.itemid ~= 7708 ) then return true end doPlayerSetExperienceRate(cid, 1.0) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your extra experience rate has ended.") doTransformItem(item.uid, 7697) return true end ae vc so muda o ID do ring se quiser, apenas va testando, a materia prima ja esta ae, esta configurado para 50% a mais de exp quando usado o ring, so é configurar.. e para fazer outro anel de exp s aplicar o mesmo script mudando a ID do ring.. va testando! qualquer duvida tb podera ver com atençao esse tutorial nesse topico: http://www.xtibia.com/forum/topic/162054-exp-ring-anel-de-experiencia/ -- Ajudei? +REP -
opa, npc que vende item em troca de itens? como moeda vip? se for isso.. script do npc: <?xml version="1.0" encoding="UTF-8"?> <npc name="Vip I Skol Items" script="data/npc/scripts/Vip Items.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="133" head="100" body="50" legs="10" feet="25" addons="3"/> <parameters> <parameter key="message_greet" value="Oi |PLAYERNAME|. Eu vendo otimos itens vip por apenas 20 a 100 moeda de ouro, para ver a lista de itens fale {list}."/> <parameter key="message_fareweel" value="Tchau, |PLAYERNAME|"/> </parameters> </npc> depois vai em scripts copia qualquer um e renomeia para Vip Items e cole: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid -- Conversa Jogador/NPC if(msgcontains(msg, 'list')) then selfSay('Eu vendo {Vip Helmet }, {Vip Armor}.', cid) elseif(msgcontains(msg, 'Vip Helmet')) then selfSay('Voc\ê quer comprar Vip Helmet por 20 moedas de ouro?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Vip Armor')) then selfSay('Voc\ê quer comprar Vip Armor por 100 moedas de ouro?', cid) talkState[talkUser] = 2 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 2157, 20) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 2501, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 20 moedas de ouro', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(doPlayerRemoveItem(cid, 2157, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 8885, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas de ouro', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) no caso o id da moeda de ouro é 2157, so mudar o id pelo item que vc deseja ou grana. -- Ajudei? +Rep
-
pelo site? entao sua vip vai ser por donate certo? vai em talkactions e apaga tudo que for referente a vip para player, como !buyvip, !buypremium, etc. quando o donate do player cair voce mesmo add pelo comando /addpremium isso que eu intendi. -- Ajudei: +Rep
-
pedido Queria Um Sistema De Ver A Vida E A Mana
pergunta respondeu ao SamueLGuedes de gahgah em Scripts
bem, vou postar o script q eu uso, e ate hj sempre funcionou. vai em talkactions e cola: <talkaction words="!mana;!life" script="manalife.lua"/> em scripts copia qualquer um e renomeia para manalife e cola: function onSay(cid, words, param) if(words == "!mana") then doPlayerSendTextMessage(cid,22,"You have " .. getCreatureMana(cid) .. " mana now\nYou have " .. getCreatureMaxMana(cid) .. " mana to the total") return TRUE elseif(words == "!life") then doPlayerSendTextMessage(cid,22,"You have " .. getCreatureHealth(cid) .. " of life now\nYou have " .. getCreatureMaxHealth(cid) .. " of the total life") return TRUE end end testa ae! -- Ajudei: +Rep -
opa, tenta usar esse amigo, é mais completo e configuraçao facil, e ja esta ali nas configuraçoes o limite de reset maximo: --[[ SCRIPTING> MarcelloMkez <scriptING ]] --[[ [Advanced Reset System] Autor: MarcelloMkez Versão: 1.0 TFS: 0.3.6 Testado em: 8.50 Fórum: www.xtibia.com/forum/topic/138026-talk-action-advanced-reset-system/ [Características] ~ Versão 1.0 ~ - Resets no Look; - Premium Account ou não; - Mudar Vocação; - Limite de Resets; - Opções para Abilitar e Desabilitar Condições; [Em Construção] - Stages Free e Premium; - 'Talvez' um novo sistema de mudar Vocação; sem data para postagem. ]] function onSay(cid, words, param) --[Configurações de Condição]__ config = { --[[verdadeiro / Falso]] needPa = false, -- Precisa de Premium Account? [true / false] needPz = true, -- Precisa estar em Protection Zone? [true / false] battle = true, -- Precisa estar sem Batlle para Resetar? [true / false] withe = false, -- Players PK Withe pode Resetar? [true / false] red = false, -- Players PK Red pode Resetar? [true / false] tp = true, -- Teleportar para o Templo após o reset? [true / false] look = true, -- Mostrar Resets no Look do Player? [true / false] addLimite = true, -- Abilitar Limite de Resets? [true / false] setClasse = false, -- Mudar Vocação do player quando resetar? [true / false] storage = 2310, -- Storage [valor] --[Configurações do Reset]__ resetStatus = { player = getPlayerGUID(cid), -- Não Mude. lvl = 2000 , -- Level Necessário para Resetar. [valor] lvlreset = 100, -- Level que retornará após o Reset. [valor] limite = 501, -- Máximo de resets que um player pode chegar. [valor] newClasse = 1, -- Id da Nova Vocação após o Reset. [valor] tempo= 3 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor] }, } --[Funções]__ function Reseting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function noAll(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noTeleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noLook(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function setClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function look(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function teleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function getResets(cid) resets = getPlayerStorageValue(cid,config.storage) if resets < 0 then resets = 0 end return resets end local resets = getResets(cid) local needLvl ="You need "..config.resetStatus.lvl-getPlayerLevel(cid).." level's to reset." local msg ="~[Reset: "..getResets(cid).."]~ 'Reset to Success! You will be logged out in "..config.resetStatus.tempo.." Seconds." --[Condiçoes]__ if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"You Need Protection Zone to be Reset.") return TRUE elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then doPlayerSendTextMessage(cid, 22, "Congratulations, you reached the limit of Resets.") return TRUE elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"You PK White, so I Can not reset.") return TRUE elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"You PK Red, so I Can not reset.") return TRUE elseif(config.needPa == true) and not isPremium(cid) then doPlayerSendTextMessage(cid,22,"You need to be Premium Account Reset.") return TRUE elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"You need to be out of Battle Reset.") return TRUE elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then addEvent(Reseting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then addEvent(noAll, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then addEvent(noLook, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then addEvent(noClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then addEvent(setClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then addEvent(look, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then addEvent(teleporting, config.resetStatus.tempo* 1000, cid) elseif doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, needLvl) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return TRUE end if doPlayerPopupFYI(cid, msg) then end return TRUE end --[by: MarcelloMkez]__ procure por: limite = 501, -- Máximo de resets que um player pode chegar. e coloque 5, ai sera o limite de resets, co configurar ali. -- Ajudei: +Rep
-
voce modifico o lib32-position e começo a dar erro no comando /a ? é isso? tente voltar como era antes de vc modificar, apenas copie e cole o original sem modificaçao: function isInRange(position, fromPosition, toPosition) return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z) end function getDistanceBetween(fromPosition, toPosition) local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y) local diff = math.max(x, y) if(fromPosition.z ~= toPosition.z) then diff = diff + 9 + 6 end return diff end function getDirectionTo(pos1, pos2) local dir = NORTH if(pos1.x > pos2.x) then dir = WEST if(pos1.y > pos2.y) then dir = NORTHWEST elseif(pos1.y < pos2.y) then dir = SOUTHWEST end elseif(pos1.x < pos2.x) then dir = EAST if(pos1.y > pos2.y) then dir = NORTHEAST elseif(pos1.y < pos2.y) then dir = SOUTHEAST end else if(pos1.y > pos2.y) then dir = NORTH elseif(pos1.y < pos2.y) then dir = SOUTH end end return dir end function getCreatureLookPosition(cid) return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid)) end function getPositionByDirection(position, direction, size) local n = size or 1 if(direction == NORTH) then position.y = position.y - n elseif(direction == SOUTH) then position.y = position.y + n elseif(direction == WEST) then position.x = position.x - n elseif(direction == EAST) then position.x = position.x + n elseif(direction == NORTHWEST) then position.y = position.y - n position.x = position.x - n elseif(direction == NORTHEAST) then position.y = position.y - n position.x = position.x + n elseif(direction == SOUTHWEST) then position.y = position.y + n position.x = position.x - n elseif(direction == SOUTHEAST) then position.y = position.y + n position.x = position.x + n end return position end function doComparePositions(position, positionEx) return position.x == positionEx.x and position.y == positionEx.y and position.z == positionEx.z end function getArea(position, x, y) local t = {} for i = (position.x - x), (position.x + x) do for j = (position.y - y), (position.y + y) do table.insert(t, {x = i, y = j, z = position.z}) end end return t end -- Ajudei: +Rep
-
va em talkactions.lua e add isso: <talkaction words="!rank;!ranks;/ranks" event="script" value="rankreset.lua"/> va em scripts, copie qualquer arquivo e renomeie para rankreset e cole: function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) local max = 20 local letters_to_next = 25 local skills = { ['fist'] = 0, ['club'] = 1, ['sword'] = 2, ['axe'] = 3, ['distance'] = 4, ['shielding'] = 5, ['fishing'] = 6, ['dist'] = 4, ['shield'] = 5, ['fish'] = 6, } local name_now local name = "Highscore for level\n" local rkn = 0 local no_break = 0 param = string.lower(param) dofile('config.lua') if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then name = name.."\n" name = name.."Rank Level - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";") repeat no_break = no_break +1 if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n" if no_break >= 20 then break end until v:next() == false elseif param == "magic" or param == "ml" then name = name.."\n" name = name.."Rank Magic - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif param == "reset" or param == "resets" then name = name.."\n" name = name.."Rank Reset - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 2310 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n" until v:next() == false elseif skills[param] ~= nil then name = name.."\n" name = name.."Rank "..param.." fighting - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n" until v:next() == false end if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE end -- caso nao tenha um sistema de reset profissional, use esse, totalmente funcional: va em talkactions.lua e add isso: <talkaction log="yes" words="!reset;!resetar" access="0" event="script" value="reset.lua"/> va em scripts, copie qualquer arquivo e renomeie para reset e cole: --[[ SCRIPTING> MarcelloMkez <scriptING ]] --[[ [Advanced Reset System] Autor: MarcelloMkez Versão: 1.0 TFS: 0.3.6 Testado em: 8.50 Fórum: www.xtibia.com/forum/topic/138026-talk-action-advanced-reset-system/ [Características] ~ Versão 1.0 ~ - Resets no Look; - Premium Account ou não; - Mudar Vocação; - Limite de Resets; - Opções para Abilitar e Desabilitar Condições; [Em Construção] - Stages Free e Premium; - 'Talvez' um novo sistema de mudar Vocação; sem data para postagem. ]] function onSay(cid, words, param) --[Configurações de Condição]__ config = { --[[verdadeiro / Falso]] needPa = false, -- Precisa de Premium Account? [true / false] needPz = true, -- Precisa estar em Protection Zone? [true / false] battle = true, -- Precisa estar sem Batlle para Resetar? [true / false] withe = false, -- Players PK Withe pode Resetar? [true / false] red = false, -- Players PK Red pode Resetar? [true / false] tp = true, -- Teleportar para o Templo após o reset? [true / false] look = true, -- Mostrar Resets no Look do Player? [true / false] addLimite = true, -- Abilitar Limite de Resets? [true / false] setClasse = false, -- Mudar Vocação do player quando resetar? [true / false] storage = 2310, -- Storage [valor] --[Configurações do Reset]__ resetStatus = { player = getPlayerGUID(cid), -- Não Mude. lvl = 2000 , -- Level Necessário para Resetar. [valor] lvlreset = 100, -- Level que retornará após o Reset. [valor] limite = 501, -- Máximo de resets que um player pode chegar. [valor] newClasse = 1, -- Id da Nova Vocação após o Reset. [valor] tempo= 3 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor] }, } --[Funções]__ function Reseting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function noAll(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noTeleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noLook(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function setClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function look(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function teleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function getResets(cid) resets = getPlayerStorageValue(cid,config.storage) if resets < 0 then resets = 0 end return resets end local resets = getResets(cid) local needLvl ="You need "..config.resetStatus.lvl-getPlayerLevel(cid).." level's to reset." local msg ="~[Reset: "..getResets(cid).."]~ 'Reset to Success! You will be logged out in "..config.resetStatus.tempo.." Seconds." --[Condiçoes]__ if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"You Need Protection Zone to be Reset.") return TRUE elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then doPlayerSendTextMessage(cid, 22, "Congratulations, you reached the limit of Resets.") return TRUE elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"You PK White, so I Can not reset.") return TRUE elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"You PK Red, so I Can not reset.") return TRUE elseif(config.needPa == true) and not isPremium(cid) then doPlayerSendTextMessage(cid,22,"You need to be Premium Account Reset.") return TRUE elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"You need to be out of Battle Reset.") return TRUE elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then addEvent(Reseting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then addEvent(noAll, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then addEvent(noLook, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then addEvent(noClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then addEvent(setClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then addEvent(look, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then addEvent(teleporting, config.resetStatus.tempo* 1000, cid) elseif doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, needLvl) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return TRUE end if doPlayerPopupFYI(cid, msg) then end return TRUE end --[by: MarcelloMkez]__ -- Ajudei? Rep+
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.