Ir para conteúdo
  • 0

Sistema de premiação por IP.


Thorick

Pergunta

Olá Scripters, gostaria de pedir à vocês umas scripts que pareciam ser simples, mas estou quebrando a cabeça para consegui-las.

 

1ª. Estou tentando fazer uma promoção aonde quem trouxer o seu time para o meu servidor, ganhe um item X. Mas para evitar fraude e afins por parte dos players, gostaria de fazer um baú aonde o prêmio só possa ser pegue apenas 1x por IP.

 

2ª. Além desse baú, gostaria de fazer um npc, que teletransportasse um player Y para a coordenada X , Y , Z. Porém, gostaria que esse NPC enviasse apenas pessoas que estejam fazendo parte de uma guild Z. (Definida por mim).

 

Obrigado a todos que tentarem.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá, Thorick.

 

Primeiramente seja bem-vindo ao xtibia.com.

 


 

Crie um arquivo em data/logs, chamado promotion21122012.log, este será o arquivo responsável por armazenar os IPs que já receberam prêmios.

 

Em data/actions/scripts, crie um arquivo chamado chest21122012.lua, colando o código abaixo:

 

local REWARDS = {
{2160, 100}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
local file = io.open(getLogsDir() .."/promotion21122012.log", "a+")

local text = file:read("*a")
if text:find(getPlayerIp(cid)) then
	return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
end

for n = 1, #REWARDS do
	local tmp = doCreateItemEx(REWARDS[n][1], REWARDS[n][2])
	doPlayerAddItemEx(cid, tmp, true)
end
file:write(getPlayerIp(cid) .."\n")
file:close()
return true
end

 

Em data/actions/actions.xml, adicione a seguinte linha:

 

<action uniqueid="10000" event="script" value="promotion21122012.lua"/>

 

Obs: Você pode mudar o número 10000 para a uniqueid do baú.

 

Antes de:

 

</actions>

 


 

Em data/npc/scripts, crie um arquivo chamado npcisland.lua, colando o código abaixo:

 

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

local guild_name = "Exemplo"
local to_position = {x = 100, y = 100, z = 7}

function callbackOnCreatureSay(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
	return false
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if msgcontains(msg, "island") then
	if getPlayerGuildName(cid) == guild_name then
		doTeleportThing(cid, to_position)
	else
		selfSay("Sorry, only members of the guild ".. guild_name .." can teleport to the {island}.", cid)
	end
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, callbackOnCreatureSay)
npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|. Do you want to go to {island}.")
npcHandler:addModule(FocusModule:new())

 

Basta fazer um NPC que use o script acima.

 

Você pode mudar o nome da guild permitida aqui:

 

local guild_name = "Exemplo"

 


 

Abraços.

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

×
×
  • Criar Novo...