Ir para conteúdo
  • Cadastre-se

Monster/NPC Npc Saffari Zone Automático!


Posts Recomendados

é um sistema de Saffari para poketibia, totalmente automático.

 

[+] O jogador não perde level(experience) ao morrer.

[+] O jogador é teleportado quando acabar o tempo ou quando suas Saffari balls acabar!

[+] Mostra o tempo restante num comando exclusivo !saffari time

 

ECewoTP.jpg

 

 

 

Pasta mods

 

Saffari.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Saffari" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> 
<config name="saffari_func"><![CDATA[
config = {
	price = 5000,
	level = 50,
	need_premium = false,
	minutes = 60,
	saffari_positions = {enter = {x=152,y=51,z=5}, exit = {x=163,y=51,z=5}},
	saffari_balls = {11445,30}, -- itemid e quantidade
	blocked_pokeballs = {2146, 2147, 11437, 11441, 11445}, -- pokeball, ultraball, greatball, masterball, safarriball 
	storages = {874547,874548} -- start, time
}
function timeString(timeDiff)
	local dateFormat = {
		{"day", timeDiff / 60 / 60 / 24},
		{"hour", timeDiff / 60 / 60 % 24},
		{"minute", timeDiff / 60 % 60},
		{"second", timeDiff % 60}
	}
	local out = {}
	for k, t in ipairs(dateFormat) do
		local v = math.floor(t[2])
		if(v > 0) then
			table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
		end
	end
	local ret = table.concat(out)
	if ret:len() < 16 and ret:find("second") then
		local a, b = ret:find(" and ")
		ret = ret:sub(b+1)
	end
	
	return ret
end

]]></config>
<event type="login" name="SaffariRegister" event="script"><![CDATA[
function onLogin(cid)
	registerCreatureEvent(cid, "SaffariDeath")
	return true
end]]></event>
<talkaction words="/saffari;!saffari" event="buffer"><![CDATA[
domodlib('saffari_func')
	param = string.lower(param)
	if getPlayerStorageValue(cid, config.storages[1]) <= 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"you are not in Saffari") return true
	end
if (param == "") then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"invalid command, enter !saffari time or !safari leave") return true
elseif isInArray({"time","tempo"}, param) then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, (getPlayerStorageValue(cid, config.storages[2]) - os.time() > 0 and "Left "..timeString(getPlayerStorageValue(cid, config.storages[2]) - os.time()).."" or "Time is over. Please wait a moment.").."\nTo leave enter command: !saffari leave") return true
elseif isInArray({"sair","leave"},param) then
		doTeleportThing(cid, config.saffari_positions.exit)
		setPlayerStorageValue(cid, config.storages[1], 0)
		setPlayerStorageValue(cid, config.storages[2], 0)
		doPlayerSendTextMessage(cid,22,'you left the saffari zone.') return true
	end
	]]></talkaction>
	<globalevent name="SaffariCheck" interval="60" event="script"><![CDATA[
	domodlib('saffari_func')
	function onThink(interval, lastExecution)
		local on = getPlayersOnline()
		if #on > 0 then
			for i = 1, #on do
				if getPlayerStorageValue(on[i], config.storages[1]) > 0 then
					if getPlayerItemCount(on[i], config.saffari_balls[1]) <= 0 or getPlayerStorageValue(on[i], config.storages[2]) - os.time() <= 0 then
						doTeleportThing(on[i], config.saffari_positions.exit)
						setPlayerStorageValue(on[i], config.storages[1], 0)
						setPlayerStorageValue(on[i], config.storages[2], 0)
						doPlayerSendTextMessage(on[i],22,'you left the saffari zone.')
					end
				end
			end
		end
		return true
	end
	]]></globalevent>
	<event type="death" name="SaffariDeath" event="script"><![CDATA[
	domodlib('saffari_func')
	function onDeath(cid, corpse, deathList)
		if isPlayer(cid) and getPlayerStorageValue(cid, config.storages[1]) >= 1 then
			setPlayerStorageValue(cid, config.storages[1], 0)
			setPlayerStorageValue(cid, config.storages[2], 0)
			doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0)
		end
		return true
	end
	]]></event>
	</mod>

 

 

NPC

 

 

Saffari Man.xml

<?xml version="1.0"?>
<npc name="Saffari Man" script="data/npc/scripts/saffari.lua" walkinterval="50000" floorchange="0">
<health now="100" max="100"/>
<look type="129" head="95" body="116" legs="121" feet="115" addons="3"/>
<parameters>
<parameter key="message_greet" value="Hello |PLAYERNAME|. You want to {enter} in the {saffari} zone!" />
</parameters>
</npc>

 

saffari.lua

domodlib('saffari_func')
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,msg = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid,msg:lower()
	if isInArray({"saffari","enter","entrar"}, msg) then
		npcHandler:say('you can stay in the Saffari zone by '..config.minutes..' minutes, the price is '..config.price..' gp(s), You want enter? {yes}', cid)
		talkState[talkUser] = 1
	elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
		for i = 1, #config.blocked_pokeballs do
			if getPlayerItemCount(cid, config.blocked_pokeballs[i]) >= 1 then
				npcHandler:say('Keep your '..getItemNameById(config.blocked_pokeballs[i])..'!', cid) return true
			end
		end
		if config.need_premium and not isPremium(cid) then
			npcHandler:say('Sorry, you need to be premium!', cid) return true
		elseif getPlayerLevel(cid) < config.level then
			npcHandler:say('Sorry, you must be at least level '..config.level..' to enter the Saffari zone!', cid) return true
		elseif not doPlayerRemoveMoney(cid, config.price) then
			npcHandler:say('Sorry, you do not have enough money!', cid) return true
			end
			doPlayerAddItem(cid, config.saffari_balls[1], config.saffari_balls[2])
			selfSay("Thanks, you've been teleported to the Saffari zone and has "..config.minutes.." minutes, if you want to leave enter {!saffari leave}.", cid)
			doTeleportThing(cid, config.saffari_positions.enter)
			setPlayerStorageValue(cid, config.storages[1], 1)
			setPlayerStorageValue(cid, config.storages[2], os.time()+config.minutes*60)
		elseif msg == "no" and talkState[talkUser] >= 1 then
			selfSay("then ok.", cid)
			talkState[talkUser] = 0
			npcHandler:releaseFocus(cid)
		end
		return true
	end
	npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
	npcHandler:addModule(FocusModule:new())

 

 

 

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

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

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 Henrique Gaudard
      Olá pessoal, primeiramente quero dizer que acho muito complicado mecher em monsters, poís qualquer erro, é fatal!! não sei porque quando fasso algumas modficações nos monsters/npcs que é quando eu modfico algumas coisas.., não entendo, só edito os nomes tipo assim;
      name "sfdsdfds" eu ponho "dhfudshgusopofkpsdakfgjid" (obs: não é no nome do arquivo lua mais sim o nome do monster mesmo já na edição) e dá erro. Se eu meche-se nas parada lá nos código todo doido de scripting tudo bem mais eu só quero editar e quando eu vou colocá-lo no mapa acontece o seguinte:
       
      Quando ligo aparece: "[Spawn : : addMonster] Cannot find "Ninja Star"" (ele está no presente no mapa e é um script obviamente). Falo!!
       
      Sistema Operacional: Windows 10

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo