-
Total de itens
64 -
Registro em
-
Última visita
Tudo que GstvoLiber postou
-
Parabens a todos os promovidos!! Espero um dia chegar a tal nível. -GstavoLiber
-
dúvida Checar Storages e Dividi-lo [Balance Storage]
pergunta respondeu ao RodriigoRobson de GstvoLiber em Scripts
Tipo, pega o total de player q tem a storage, depois vai dividindo, sorteia 1 e poe numa storage blue, depois sorteia outro e poe na storage red, e assim vai, acho que um for deve dar pra fazer, condição de parada, até que players com a storage blue e com storage red sejam iguais a numero total de players com storage inicial / 2 Não sei se entendeu, qlqer coisa explico de novo. -GstavoLiber -
Faz um IF dentro de um for, e vai adicionando os valores numa table, depois um for para testar cada posição com um valor pré definido num variavel chamada maior = 1 por exemplo, assim td vez que a skill for maior do que tem dentro da variavel, vc troca o valor da varial maior pela skill. =) -GstavoLiber
-
dúvida [EXPERT] MYSQL dúvidas de Comandos.
pergunta respondeu ao GstvoLiber de GstvoLiber em Scripts
Hmm exatamente, essa parte de: query:getDataInt("tileMana") Não manjava, essa função de getDataInt é uma função já da linguagem lua ? Ajudou muuuuito. +REP. -GstavoLiber -
dúvida [EXPERT] MYSQL dúvidas de Comandos.
pergunta respondeu ao GstvoLiber de GstvoLiber em Scripts
Na segunda pergunta: Por exemplo, não sei se eu estava fazendo errado, mas eu queria salvar numa variavel essa expressão sua, e depois comparar, se for > 0 executa o bloco, se não, cai em uma mensagem de erro, mas tava dando erro no distro que não podia comprar boolean com number. Vou testar agr com sua expressão, se der tudo certo, o problema foi resolvido. Aguenta ai. -GstavoLiber -
Bom, preciso saber os comandos para ler o valor de uma coluna no mysql por exemplo.. Esse aqui remove 1 do valor existente: db.executeQuery("UPDATE `players` SET `tileMana` = `value` - 1 WHERE `id` = ".. getPlayerGUID(cid) ..";") Preciso de um comando desse para ler o que tem na coluna tileMana do player. E também, como faço para comparar uma boolean com um valor dentro de um if ?? Valeu ai quem puder ajudar.+rep. -GstavoLiber
-
action Alterar wandDamage do player em action
tópico respondeu ao BreisPodeu de GstvoLiber em Lixeira Pública
Infelizmente não conheço nenhum outro comando para modificar o vocations.xml dentro do game, mas uma idéia te dou: Você poderia criar vocations, com o mesmo nome, tudo igual, so muda a wandDamage, afinal, os players não tem essa informação. O único problema, é que teria que criar a nova vocação e portanto um id diferente da mesma poderia estragar algum outro sistema que usa em base a vocação padrao. Mas de certa maneira é uma idéia, assim, cada vez que usasse alguma coisa no seu item, mudava da vocação por exemplo: Druid, para Druid, mas de certo modo, Druid com wandDamage 1.0 para Druid com WandDamage 2.0, porém, outro problema, é que não da pra fazer um número infinito né, entao teria apenas algumas variações. Se possível da +REP ali onde te ajudei =) -GstavoLiber -
Cara, já respondo sua dúvida uma vez, ou então de alguem com o problema parecido. Em movements.xml adiciona um script .lua com isso dentro: --BY GSTAVOLIBER FOR XTIBIA function onStepIn(cid, item, position, fromPosition) local config = { str = 24000, strCountPots = 240001 } if item.actionid == 2001 then if getPlayerStorageValue(cid, config.strCountPots) == 0 then doTeleportThing(cid, fromPostition) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"Você precisa comprar poções especiais para treinar aqui! ") setPlayerStorageValue(cid, config.str, 0) end if getPlayerStorageValue(cid, config.str) == 0 then setPlayerStorageValue(cid, config.str, 1) repeat addEvent(doCreatureAddMana(cid, ADDmana()), 60) -- editar o tempo de cada heal setPlayerStorageValue(cid, config.strCountPots, getPlayerStorageValue(cid, config.strCountPots) - 1) until (getPlayerStorageValue(cid, config.strCountPots) == 0) if(getPlayerStorageValue(cid, config.strCountPots) == 0) then doTeleportThing(cid, fromPostition) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"Suas poções acabaram. Por favor, compre mais, para continuar treinando.") setPlayerStorageValue(cid, config.str, 0) end end else doTeleportThing(cid, fromPostition) setPlayerStorageValue(cid, config.str, 0) end return TRUE end function onStepOut(cid, item, pos) setPlayerStorageValue(cid, config.str, 0) return TRUE end function ADDmana() manaADD = {math.random(200, 450)} -- editar a quantidade minima e a quantidade maxima de heal. return manaADD end <movevent type="StepIn" actionid="2001" event="script" value="nomeDoScript.lua"/> <movevent type="StepOut" actionid="2001" event="script" value="nomeDoScript.lua"/> Agora, basta criar um NPC, que adicione na strCountPots a quantidade de poções que comprar. Qnd essa storage chegar a 0, ele será retirado do tile. -GstavoLiber
-
Em movements adicione um arquivo chamado expBonusTile.lua e ponha dentro: --BY GSTAVOLIBER FOR XTIBIA function onStepIn(cid, item, frompos, item2, topos) local storage = 1000 if(getPlayerStorageValue(uid, storage) == 1)then setPlayerStorageValue(uid, storage, 0) doPlayerSendTextMessage(cid, 22, 'Você perdeu seu bonus de exp! ') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")) else setPlayerStorageValue(uid, storage, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) end return true end Em movements.xml adicione: <movevent type="StepIn" actionid="3135" event="script" value="expBonusTile.lua"/> Config: Mude o actionID da linha a cima, e o numero da storage lá em cima. Agora, poe o actionID no tile em baixo do seu teleport. -GstavoLiber
-
action Alterar wandDamage do player em action
tópico respondeu ao BreisPodeu de GstvoLiber em Lixeira Pública
Para sua DÚVIDA 1) Tem vários sistemas de refinar item aqui, com eles você pode almentar o attack da wand e tudo mais.. agora para um script é só usar a msm lógica de qualquer um tipo de sistema de refine. Para sua DÚVIDA 2) Você pode procurar no player pelo slot: getPlayerSlotItem(cid, slot) Hand, feet, head,ring,necklance, body Pelo ID: getPlayerItemById(cid, deepSearch, itemId) Ou contagem do item em posse do player: getPlayerItemCount(cid, itemid) Para pegar os valores, utilize: getItemAttack(uid) getItemArmor(uid) getItemDefense(uid) getItemExtraDefense(uid) getItemExtraAttack(uid) Qualquer outra dúvida posta aqui. Esse tópico é de dúvida. Sem pedidos por aqui. -GstavoLiber -
Se é problema no distro, e você tiver as sources, compila de novo. Se for mesmo no distro, tenta compilar sem modificação nenhuma, só pra ver se foi erro das sources ou erro seu na hr de modificar alguma coisa. Se não tiver as sources, sinto muito mas n posso mais ajudar rsrs. -GstavoLiber
-
Acho que isso deve resolver: function onUse(cid, item, fromPosition, itemEx, toPosition) local pos1, itm1 = {x=1, y=1, z=1, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 1 local pos2, itm2 = {x=2, y=2, z=2, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 2 local pos3, itm3 = {x=3, y=3, z=3, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 3 local config = { [1] = {item1= 1111,item2 = 2222,item3 = 3333,newitem = 4444}, -- item 1, item 2, item 3, item que ganha. [2] = {item1= 5555,item2 = 6666,item3 = 7777,newitem = 8888}, [3] = {item1= 9999,item2 = 1010,item3 = 1111,newitem = 1212} } local posNewItem = {x= 1, y= 2, z=3} -- pos do novo item local it1= getThingFromPos(pos1) local it2= getThingFromPos(pos2) local it3= getThingFromPos(pos3) if (it1.itemid == config[1].item1) and (it2.itemid == config[1].item2) and (it3.itemid == config[1].item3) then doRemoveItem(it1.uid) doRemoveItem(it2.uid) doRemoveItem(it3.uid) doCreateItem(config[1].newitem, 1, posNewItem) doPlayerSendTextMessage(cid, 22, "Parabéns você fez a fusão dos item.") -- mensagem quando funciona elseif (it1.itemid == config[2].item1) and (it2.itemid == config[2].item2) and (it3.itemid == config[2].item3)then doRemoveItem(it1.uid) doRemoveItem(it2.uid) doRemoveItem(it3.uid) doCreateItem(config[2].newitem, 1, posNewItem) doPlayerSendTextMessage(cid, 22, "Parabéns você fez a fusão dos item.") -- mensagem quando funciona elseif (it1.itemid == config[3].item1) and (it2.itemid == config[3].item2) and (it3.itemid == config[3].item3)then doRemoveItem(it1.uid) doRemoveItem(it2.uid) doRemoveItem(it3.uid) doCreateItem(config[3].newitem, 1, posNewItem) doPlayerSendTextMessage(cid, 22, "Parabéns você fez a fusão dos item.") -- mensagem quando funciona -- so seguir o padrao de elseif. end return true end Qualquer coisa, se estiver errado me desculpe so quis ajudar e.e -GstavoLiber
-
Isso ai. Podem fechar o tópico. Pedido Entregue.
-
Onde você mecheu, tente voltar para como estava antes de dar o erro... ai se funcionar, posta o script que você tinha mechido. -GstavoLiber
-
Diminui o tempo de intervalo na linha do .xml : <globalevent name="Rain" interval="1000" event="script" value="rain.lua"/> <globalevent name="RainTime" interval="36000" event="script" value="raintime.lua"/> para: <globalevent name="Rain" interval="200" event="script" value="rain.lua"/> <globalevent name="RainTime" interval="1000" event="script" value="raintime.lua"/> Assim você consegue ver melhor. -GstavoLiber
-
Bom, modifiquei um pouco, agora, pelo menos, só vai funcionar se, o player não estiver em um protection zone. Aos poucos vou mechendo e tentando resolver para não cair os efeitos em pz. Já tenho a idéia, só me falta tempo. Ah, também agora só chove no andar 7. @EDIT local Cyko = { interval = 1000, --1000Recommended. But here you decide until it starts raining as hell! waterid = {4608, 4609, 4610, 4611, 4612} } function Rain(cid) if getStorage(3000) == 1 then for _, cid in ipairs(getPlayersOnline()) do if isCreature(cid) then if getThingPos(cid).z == 7 then local pos = getThingPos(cid) local frompos = getThingPos(cid) pos.x = pos.x + math.random(-9,9) pos.y = pos.y + math.random(-9,9) frompos.x = pos.x - 9 frompos.y = pos.y - 9 for i = 1,#Cyko.waterid do if getTileItemById(pos, Cyko.waterid[i]).uid > 0 then doSendMagicEffect(pos,CONST_ME_WATERSPLASH) else if getTileInfo(frompos).protection == false or getTileInfo(pos).protection == false then doSendDistanceShoot(frompos, pos, CONST_ANI_ICE) else end if (getTileInfo(pos).protection == false and getTileInfo(pos).protection == false)then doSendMagicEffect(pos,CONST_ME_LOSEENERGY) else end end end end end end end end function isUnderRoof(cid) --We need to figure this out! end function onThink(interval, lastExecution) if getStorage(3000) == 1 then for _, cid in ipairs(getPlayersOnline()) do if getThingPos(cid).z == 7 then for i = 1, 5 do addEvent(Rain, i*Cyko.interval, cid) end end end end return true end Agora sim, está certinho. Veja, o efeito que parece que está caindo dentro de templo, ou de houses, é só uma má interpretação do nosso cérebro. Pois, ela está caindo na diagonal, e o lugar que ela cai e sempre onde tem o efeito de rings. veja o exemplo: Outro exemplo: Portanto, não chove mais dentro de PZ. Agora só preciso aprimorar para não chover onde tiver telhado ou outro andar em cima. Já tenho a idéia também, porém, sem tempo hoje. gastei td meu tempo pra te ajudar rsrsrs.. fica pra próxima. Se possível +REP -GstavoLiber
-
Você mecheu recentemente em spells ou algo que tenha a ver target, ou distance shot ? -GstavoLiber
-
Bom, tá errado a lugar que você postou, mas mesmo assim: Em xampp-htdocs arquivo latestnews.php, abre ele no bloco de notas, e antes do <?PHP na primeira linha, adiciona dentro: <div id="LayerPop" style="display:block; position:absolute; left:0px; top:0px; background-color:#1e1e22; width:100%; height:180%; z-index:100;margin:0px;opacity:0.85;"></div> <div id="LayerPop2" style="position: absolute; left: 33%; top: 120px; z-index: 5000;"><a href="?subtopic=donate" target="_BLANK"><img src="layouts/SEULAYOUT/images/promo.jpg" class="imgBorder"></a><br><a href="javascript:void();" onClick="document.getElementById('LayerPop').style.display = 'none';document.getElementById('LayerPop2').style.display = 'none'"> <b>Fechar</b></a></div> Opacity na primeira linha: Ai sera onde você vai definir a opacidade da "pagina de trás" do banner,0.00 é totalmente transparente e 1.00 é totalmente preto. ?subtopic=donate: Ai será o arquivo (pagina) onde a pessoa irá ser direcionada quando clicar,no caso ele vai para parte de comprar pontos do meu server.Se quiser mudar é só colocar endereço para onde quer que seja direcionado...por exemplo "?subtopic=nomedapagina" layouts/SEULAYOUT/images/promo.jpg: Ai será onde está localizada a imagem do banner, pra não ter que mudar muita coisa faça como eu,deixe sua imagem na pasta: xampp/htdocs/layouts/SEULAYOUT/images/nomedaimagem.jpg (recomendo fazer uma imagem de 500 por 300). É isso ai. créditos totais a Giordano. Se Possível +REP -GstavoLiber
-
creatureevent System de Premiação por ficar ONLINE
tópico respondeu ao GstvoLiber de GstvoLiber em Globalevents e Spells
Valeu cara, pode ter certeza que vou. =) -GstavoLiber -
creatureevent System de Premiação por ficar ONLINE
tópico respondeu ao GstvoLiber de GstvoLiber em Globalevents e Spells
Obrigado pela atenção, realmente significa muito pra min, foi o primeiro sistema útil que fiz eu acho rsrs... Vou editar e fazer as alterações corretas. -GstavoLiber -
Me manda o link desse que chove no PZ, esse é o mais perto do que você quer, só precisa modificar umas coisas. -GstavoLiber
-
creatureevent System de Premiação por ficar ONLINE
um tópico no fórum postou GstvoLiber Globalevents e Spells
Bom galera, quis fazer o script pra ajudar um membro da comunidade.. Espero que gostem! É um script simples, que a cada 1 hora online, dá um item para o player. Esse tempo online será salva num espaço na sua database, e depois vou aprimorar o script para criar um rank dos mais online. De qualquer forma, modificações desse script viram, então aguardem. Em creaturescript.xml adicione: <event type="login" name="tempo_on_reward" event="script" value="rewardON.lua"/> <event type="logout" name="tempo_on_reward2" event="script" value="rewardON.lua"/> Em login.lua adicione: registerCreatureEvent(cid, "tempo_on_reward2") Agora, na pasta scripts, cria um arquivo chamado rewardON.lua e adicione dentro: -- Script made by GstavoLiber -- -- Config -- storage = 2001 -- storage que vai salvar o tempo online temporariamente. item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) if(getPlayerStorageValue(uid, storage) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storage) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") setPlayerStorageValue(uid, storage, 0) setPlayerStorageValue(uid, storage, rest) return TRUE else setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) return TRUE -- return false impede o jogador de dar logout end Pessoal, tenho uma leve impressão que eu errei na lógica, então caso não funcione o de cima, testa esse de baixo: -- Script made by GstavoLiber -- -- Config -- storageInit = 2001 -- storage que vai salvar o tempo online temporariamente. storageFinish = 2002 -- storage que vai salvar o tempo online temporariamente. storageTotal = 2003 item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) setPlayerStorageValue(uid, storageInit, os.time()) if(getPlayerStorageValue(uid, storageTotal) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storageTotal) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") if(rest > 0) then setPlayerStorageValue(uid, storageTotal, rest) else setPlayerStorageValue(uid, storageTotal, 0) end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storageFinish, os.time()) setPlayerStorageValue(uid, storageTotal, getPlayerStorageValue(uid, storageTotal) + (getPlayerStorageValue(uid, storageFinish) - getPlayerStorageValue(uid, storageInit))) return TRUE -- return false impede o jogador de dar logout end Obrigado pela atenção, Já ia esquecendo, tem que adicionar na sua database em MYSQl, o seguinte query: ALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Mude a palavra frags, para o nome da ultima coluna da sua table players. Se Possível +REP -GstavoLiber -
[Encerrado] HP nas transform e reborn quest
tópico respondeu ao jeanchess de GstvoLiber em Tópicos Sem Resposta
Procura nos scripts de NPC, ou entao em ACTIONS, deve ser em alguma quest que deve ganhar, ou entao ao conversar com NPC que se transforma... nao tenho ideia do resto, pq nunca mechi com esse tipo de servidor. -GstavoLiber -
[Encerrado]Naruto Shinobi Story(em busca de interessados)
tópico respondeu ao Relmans de GstvoLiber em Formação de Equipes
Posso ajudar com alguns scripts, tenho pouco a oferecer, mas quero ajudar. -scrippter -mapper -webdesigner skype- Guhliber -
Exato.
- 13 respostas
-
- tibia files protection
- resolvido
- (e 2 mais)
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.