Ir para conteúdo
  • Cadastre-se

Posts Recomendados

@Superion, testa ai ...

function onUse(cid, item, itemEx, toPosition)

        doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)
	doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE , 'You successfully changed sex!')
	doSendMagicEffect(getCreaturePosition(cid), 35)
	doPlayerRemoveItem(cid, item.uid, 1)

	return true
end 
Link para o post
Compartilhar em outros sites

 

@Superion, testa ai ...

function onUse(cid, item, itemEx, toPosition)

	if (getPlayerSex(cid) == 1) then
		doPlayerSetSex(cid, 0)
	else
		doPlayerSetSex(cid, 1)
	end

	doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE , 'You successfully changed sex!')
	doSendMagicEffect(getCreaturePosition(cid), 35)
	doPlayerRemoveItem(cid, item.uid, 1)

	return true
end 

 

Funcinou de boa, eu agradeço cara.

Mas não sei bem se isso é um Bug ou não, mas o Char só tróca de sexo quando reloga.

De qualquer forma, REP+.

Conlheça o projeto:

QtzGx2h.png

Link para o post
Compartilhar em outros sites

olha só que código inovador, porque ngm pensou nisso antes?? Parabéns MLK rep+

tem futuro, continua com essa criatividade que tem futuro!

abraços

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Superion, tenta assim: 

function onUse(cid, item, itemEx, toPosition)

	if (not isPlayerPzLocked(cid)) then
		doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)
		doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE , 'You successfully changed sex!')
		doSendMagicEffect(getCreaturePosition(cid), 35)
		doPlayerRemoveItem(cid, item.uid, 1)
		doPlayerRemove()
	end

	return true
end  

Caso não funcione poste aqui.

 

@Vodkart, kkk   :hum:  

Link para o post
Compartilhar em outros sites
troca:
if (getPlayerSex(cid) == 1) then
doPlayerSetSex(cid, 0)
else
doPlayerSetSex(cid, 1)
end
 
por
 
doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

troca:

if (getPlayerSex(cid) == 1) thendoPlayerSetSex(cid, 0)elsedoPlayerSetSex(cid, 1)end
por

doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)

Na boa, eu tentei entender mas não consegui pode explicar? Ele vai setar um novo status com base no antigo. Mas explica como ele vai decidir caso seja 1?

1 == 1 and 0 or 1?

E sempre bom aprender novas logicas, afim de reduzir linhas.

Editado por Ka zuza (veja o histórico de edições)

z_WL63_Tt.png

Link para o post
Compartilhar em outros sites

doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)
isso são operadores lógicos... "and", "or" ou "not"

geralmente eles possuem duas variáveis de entrada resultando em apenas uma variável de saída.

Para o operador "and", o resultado será verdadeiro apenas se as variáveis de entrada forem verdadeiras, caso contrário o resultado será falso.

"getPlayerSex(cid) == 1 and 0" -- o sexo do jogador é 1 então ele passa para 0(verdadeiro)

Para o operador "or", o resultado será verdadeiro caso pelo menos uma das variáveis de entrada seja verdadeira. Se ambas forem falsas, o resultado será falso.

"getPlayerSex(cid) == 1 and 0 or 1" -- o sexo do jogador não é 1(falso), logo ele passa para o sexo 1

mais ou menos assim:

doPlayerSetSex(cid, SE o sex do jogador(cid) é == 1 então colocar 0 senão colocar 1)
Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
@Vodkart, muito obrigado pela explicação! Creio ter entendido a logica por trás dos operadores. Editado por Ka zuza (veja o histórico de edições)

z_WL63_Tt.png

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Usei no TFS 1.0 e deu isso.

 

Lua Script Error: [Action Interface] 
data/actions/scripts/changesex.lua:onUse
data/actions/scripts/changesex.lua:8: attempt to call global 'getSex' (a nil value)
stack traceback:
[C]: in function 'getSex'
data/actions/scripts/changesex.lua:8: in function <data/actions/scripts/changesex.lua:1>
 
Lua Script Error: [Action Interface] 
data/actions/scripts/changesex.lua:onUse
data/actions/scripts/changesex.lua:8: attempt to call global 'getSex' (a nil value)
stack traceback:
[C]: in function 'getSex'
data/actions/scripts/changesex.lua:8: in function <data/actions/scripts/changesex.lua:1>
Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 2 months later...
  • 2 months later...
Queria saber como adiciono neste script para remover o item apos o uso, pois o personagem esta utilizando o item e não esta descontando o item da mochila.
 
function onUse(cid, item, itemEx, toPosition)
 
doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE , 'You successfully changed sex!')
doSendMagicEffect(getCreaturePosition(cid), 35)
doPlayerRemoveItem(cid, item.uid, 1)
 
return true
end 
 
Por favor me ajudem.
Editado por acesso123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

/\

function onUse(cid, item, itemEx, toPosition)
		
	if getTileInfo(getThingPos(cid)).protection then 
	    doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1)
		doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE , 'You successfully changed sex!')
		doSendMagicEffect(getCreaturePosition(cid), 35)
		doRemoveItem(item.uid, 1)
		doRemoveCreature(cid, true)
	else
		doPlayerSendTextMessage(cid, 19, "você tem que estar em protection zone pra usar")
	end
 
return true
end 

Na próxima crie um tópico na área de suporte de scripts.

EQD4Qy4.gif

Link para o post
Compartilhar em outros sites

proxima vez libera la pra criar, dai eu crio na area correta. Pois tentei criar la, mas não tinha possibilidade, então coloquei aqui que foi mais proximo que encontrei do que eu precisava.

 

 

E o script da erro no databasequando inicia o server. Sabe me dizer o que pode ser?

Antes o script que te passei não dava erro.

Editado por acesso123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 month later...

Show de bola, funcionou certinho! REP+

Meu servidor -> http://atena-global.com/

 

Visite o servidor e ajude-nos a crescer! Atena Global, um novo conceito de Tibia, o verdadeiro RPG você encontra aqui!

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Imperius
      Olá, pessoal! Acabei encontrando um script que tinha feito a um tempo atrás. Estou compartilhando aqui para quem quiser usar ou melhorar.
       
      É bem parecido com os outros sistemas de roleta, igual deste tópico: https://tibiaking.com/forums/topic/101557-action-cassino-roleta-de-items/
       
      Como funciona?
       
      O "Treasure Chest" é um item custom, onde o jogador têm a possibilidade de ganhar itens raros ou bem meia boca. Tudo dependerá da sorte.
       
      O jogador precisa tacar o treasure chest na bancada e acionar a alavanca. O treasure chest irá se transformar em vários itens de forma randômica no qual o jogador poderá ou não ganhar. No final, apenas um item é entregue ao jogador.
       
      Para entender melhor o seu funcionamento, segue o GIF abaixo:
       

       
       
      em data > actions > actions.xml
       
       
      em data > actions > scripts > crie um arquivo chamado leverTreasureChest.lua
       
       
      no banco de dados do servidor, adicione o seguinte código em "SQL":
       
       
       

      Também estou disponibilizando uma página PHP, para quem quiser usar no site do servidor. Na página tem informações sobre o funcionamento, quais são os possíveis prêmios e a lista de jogadores que ganharam os itens raros.
       

       
       
      Espero ter ajudado de alguma forma! : )
       
      treasure_chest.php
    • Por PokemonXdemon
      [Quest System]
       
       
      Estava ontem analisando minha base, aonde tinha várias quests em arquivos separados.
      Então, pq não organizar tudo em apenas um arquivo exemplo:
      Então fiz esse script, meio simples mas útil para organizar tudo.
       
       
      Agora vamos entender oq precisamos fazer!
       
       Uma pequena atualização,  agora fica em um lugar separado a configuração para ficar mais  fácil modificar.
      Agora pode adicionar o boost que voce deseja no pokemon.
       
      Bem é isso.
    • Por Anderson Sacani
      Venho publicar uma alteração que eu e minha equipe fizemos no script já existente do Canary.
      O arquivo do script se chama quest_system1.lua.
      Fizemos essa alteração, porque o sistema original não entregava chave com actionid ao jogador. A chave vinha com o código 0000, ou seja, não abria nenhuma porta.
      A alteração que fizemos foi justamente para arrumar esse bug, por tanto, agora quando o quest ter uma chave com actionid dentro do baú, o jogador receberá essa mesma chave com o actionid definido.
       
      local specialQuests = { -- {x = 32752, y = 32343, z = 14} [52167] = Storage.DreamersChallenge.Reward, -- {x = 32806, y = 32230, z = 11} [52003] = Storage.PitsOfInferno.WeaponReward, -- {x = 32311, y = 32211, z = 8} [51400] = Storage.ThievesGuild.Reward, [51324] = Storage.WrathoftheEmperor.mainReward, -- {x = 32232, y = 31066, z = 7} [51715] = Storage.SvargrondArena.RewardGreenhorn, -- {x = 32232, y = 31059, z = 7} [51716] = Storage.SvargrondArena.RewardScrapper, -- {x = 32232, y = 31052, z = 7} [51717] = Storage.SvargrondArena.RewardWarlord } local questsExperience = { [3101] = 1 -- dummy values } local questLog = { [8213] = Storage.HiddenCityOfBeregar.DefaultStart } local tutorialIds = { [50080] = 5, [50082] = 6, [50084] = 10, [50086] = 11 } local hotaQuest = { 50950, 50951, 50952, 50953, 50954, 50955 } local questSystem1 = Action() function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHotkey) local storage = specialQuests[item.actionid] if not storage then storage = item.uid if storage > 65535 then return false end end if storage == 23644 or storage == 24632 or storage == 14338 then player:setStorageValue(Storage.SvargrondArena.PitDoor, -1) end if player:getStorageValue(storage) > 0 and player:getAccountType() < ACCOUNT_TYPE_GOD then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.') return true end local function copyContainer(originalContainer, newContainer) for i = 0, originalContainer:getSize() - 1 do local originalItem = originalContainer:getItem(i) local newItem = Game.createItem(originalItem.itemid, originalItem.type) newItem:setActionId(originalItem:getActionId()) newItem:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, originalItem:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) if originalItem:isContainer() then copyContainer(Container(originalItem.uid), Container(newItem.uid)) end newContainer:addItemEx(newItem) end end local items, reward = {} local size = item:isContainer() and item:getSize() or 0 if size == 0 then local actionId = item:getActionId() reward = Game.createItem(item.itemid, item.type) reward:setActionId(actionId) reward:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, item:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) else local container = Container(item.uid) for i = 0, container:getSize() - 1 do local originalItem = container:getItem(i) local newItem = Game.createItem(originalItem.itemid, originalItem.type) newItem:setActionId(originalItem:getActionId()) newItem:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, originalItem:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) if originalItem:isContainer() then copyContainer(Container(originalItem.uid), Container(newItem.uid)) end items[#items + 1] = newItem end if size == 1 then reward = items[1] end end local result = '' if reward then local ret = ItemType(reward.itemid) if ret:isRune() then result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward.type .. ' charges)' elseif ret:isStackable() and reward:getCount() > 1 then result = reward:getCount() .. ' ' .. ret:getPluralName() elseif ret:getArticle() ~= '' then result = ret:getArticle() .. ' ' .. ret:getName() else result = ret:getName() end else if size > 20 then reward = Game.createItem(item.itemid, 1) elseif size > 8 then reward = Game.createItem(2854, 1) else reward = Game.createItem(2853, 1) end for i = 1, size do local tmp = items[i] if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR then Spdlog.warn("[questSystem1.onUse] - Could not add quest reward to container") end end local ret = ItemType(reward.itemid) result = ret:getArticle() .. ' ' .. ret:getName() end if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then local weight = reward:getWeight() if player:getFreeCapacity() < weight then player:sendCancelMessage(string.format('You have found %s weighing %.2f oz. You have no capacity.', result, (weight / 100))) else player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.') end return true end if questsExperience[storage] then player:addExperience(questsExperience[storage], true) end if questLog[storage] then player:setStorageValue(questLog[storage], 1) end if tutorialIds[storage] then player:sendTutorial(tutorialIds[storage]) if item.uid == 50080 then player:setStorageValue(Storage.RookgaardTutorialIsland.SantiagoNpcGreetStorage, 3) end end if isInArray(hotaQuest, item.uid) then if player:getStorageValue(Storage.TheAncientTombs.DefaultStart) ~= 1 then player:setStorageValue(Storage.TheAncientTombs.DefaultStart, 1) end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.') player:setStorageValue(storage, 1) return true end for index, value in pairs(specialQuests) do questSystem1:aid(index) end questSystem1:aid(2000) questSystem1:register()  
    • Por Anderson Sacani
      local config = { scrollId = 14758, premiumDays = 30, } local days = config.premiumDays local premiumScroll = Action() function premiumScroll.onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addPremiumDays(days) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce recebeu " .. days .. " dias de conta premium.") item:remove(1) addEvent(function() if player:isPlayer() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No total voce tem " .. player:getPremiumDays() .. " dias de conta premium.") end end, 2500) return true end premiumScroll:id(config.scrollId) premiumScroll:register() Percebi que alguns servidores estão vindo sem o script do premium scroll, então criei esse script para adicionar 30 dias de premium na conta do jogador que usar o premium scroll.
    • Por amoxicilina
      Action: Remover skull
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo