Ir para conteúdo

Pergunta premiada


Posts Recomendados

Bom, estava sem o que fazer, e fiz esse simples script de "pergunta premiada".

 

Como funciona?

Um membro da staff faz uma pergunta com um comando, e então, o primeiro player a responder corretamente, recebe o prêmio definido.

 

Imagens:

 

 

!perguntar Quem fez esse script?:::featzen:::2160:::10

j84KBN9.png

 

!responder featzen

4iIAyA2.png

 

 

 

Bom, vamos ao que interessa.

 

1º - Na pasta data/talkactions/script/, crie um arquivo chamado question.lua, e nele coloque:

 

 

local prize, question, answer, globalSto, t, sto = {}, nil, nil, 11789, {}, nil
local model = "$question\nPrêmio: $itemcountx $itemname\nUse !responder [resposta]"
function checkAsks()
	local sto = getGlobalStorageValue(globalSto) and getGlobalStorageValue(globalSto) or "nothing"
	local haveAsk = (type(sto) == "string" and sto ~= "nothing")
	if haveAsk then
		local t = string.explode(sto, ":::")
		local question = t[1]
		local answer = t[2]
		local prizeItem = t[3]
		local prizeCount = t[4]
		local str = ""
		str = string.gsub(model, "$question", question)
		str = string.gsub(str, "$itemcount", prizeCount)
		str = string.gsub(str, "$itemname", (getItemInfo(prizeItem).name))
		doBroadcastMessage(str)
		addEvent(checkAsks, 1000 * 60)
	end
end

function onSay(cid, words, param, channel)
sto = getGlobalStorageValue(globalSto) and getGlobalStorageValue(globalSto) or "nothing"
	if words == "!perguntar" then
		if not param then
			doPlayerSendTextMessage(cid, 20, "Parâmetro errado.")
			return true
		end
		t = string.explode(param, ":::")
		if #t ~= 4 then
			doPlayerSendTextMessage(cid, 20, "Certifique-se que o parâmetro está nesse modelo: '!perguntar Quanto e 1+1:::2:::2160:::1'.")
			return true
		end
		question = t[1]
		answer = t[2]
		prize.i = t[3]
		prize.c = t[4]
		if setGlobalStorageValue(globalSto, question .. ":::".. answer .. ":::".. (prize.i) .. ":::" .. (prize.c)) then
			doPlayerSendTextMessage(cid, 20, "Questão ativa.")
			checkAsks()
		end
	elseif words == "!responder" then
		if (type(sto) == "number" or sto == "nothing") then
			doPlayerSendTextMessage(cid, 22, "Nenhuma questão agora.")
			return true
		end
		t = string.explode(sto, ":::")
		answer = t[2]
		prize.i = t[3]
		prize.c = t[4]
		if string.lower(param) == string.lower(answer) then
			doPlayerSendTextMessage(cid, 20, "Resposta correta!")
			doPlayerAddItem(cid, prize.i, prize.c)
			doBroadcastMessage(getCreatureName(cid) .. " foi o primeiro a responder a questão corretamente e recebeu ".. (prize.c) .. "x "..(getItemInfo(prize.i).name) .. "!")
			doBroadcastMessage("A resposta era: "..answer..".")
			doSendMagicEffect(getThingPos(cid), 14)
			setGlobalStorageValue(globalSto, "nothing")
		else
			doPlayerSendTextMessage(cid, 20, "Resposta errada!")
		end
	end

	return true
end 

 

 

 

2º - No arquivo data/talkactions/talkactions.xml, adicione as seguintes tags:

 

 

<talkaction words="!perguntar" access="4" event="script" value="question.lua"/>
<talkaction words="!responder" event="script" value="question.lua"/>

 

 

 

Lembrando:

 

 

Para fazer uma pergunta, use:

!perguntar [pergunta]:::[resposta]:::[id do premio]:::[quantidade do premio]

E para responder:

!responder [resposta]

 

 

 

Espero que seja útil.

 

Créditos:

Featzen

Editado por Featzen
Link para o comentário
Compartilhar em outros sites

Gostei do script e da lógica que tu usou pra fazer ele também, creio que o uso de "," no lugar ":::" seria mais "light", seria uma boa ele pras versões tfs 1.x + também.

 

abrçs

Editado por ScreaM
Link para o comentário
Compartilhar em outros sites

Gostei do script e da lógica que tu usou pra fazer ele também, creio que o uso de "," no lugar ":::" seria mais "light", seria uma boa ele pras versões tfs 1.x + também.

 

abrçs

Valeu. Eu usei ":::" porque assim posso usar as "," nas perguntas(e sou meio exagerado, poderiam ser só "::").

Quanto as versões do tfs 1.x, eu teria que baixar haha, depois vejo isso.

Editado por Featzen
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...