Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Vish cara fiz tudo certinho 3x para confirmar so que aqui aparece isso quando dou !pvshop on

05:48 You're near a npc.

e quando deslogo nao aparece nenhum npc 0.o'

Como a mensagem informa, você não pode ligar o PVShop próximo a um NPC.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites
  • 1 month later...

tem como em vez de ser um npc, ser algum item com action que ativa o trade?

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

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

.

Editado por pablobion
double post sorry (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

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

Creio que dê sim, se puder postar em spoiler o código aqui para eu não precisar baixar, poderia analisar pra você.

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites
  • 1 month later...

max, seria interessante numa proxima versão a opção de poder tanto vender como COMPRAR item de alguem. ex: escolher tal item, ai se alguem tiver e tiver no comercio vender o item pro shop :D.

se alguem souber como fazer isso por favor me ajude :D

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

Seria legal se tivesse a opção de vender por gold e por premium points. Muito bom esse MOD uso há um bom tempo já

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

Te Ajudei? Rep + e ficamos Quits

166420979_logoyanliimaornight.png.33f822b8970081a5b3646e85dbfd5934.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.png.890d5a38d7bcde75543c72b624a65de1.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

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

O meu aqui está dando o seguinte erro.

[Error - TalkAction Interface]
mods/scripts/Private Shop/Talkaction.lua:onSay
Description:
mods/scripts/Private Shop/Talkaction.lua:13: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
        [C]: in function 'pairs'
        mods/scripts/Private Shop/Talkaction.lua:13: in function 'tabletama'
        mods/scripts/Private Shop/Talkaction.lua:94: in function <mods/scripts/Private Shop/Talkaction.lua:22>

 

Tenho que executar algo na db para ele funcionar corretamente?

Link para o post
Compartilhar em outros sites
  • 8 months later...

O meu funcionou alguma a maior parte, mas quando digita !pvshop list ou !pv help da dbug, alguém pode me ajudar? não há erros na distro

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 7 years later...
32 minutos atrás, leo18dff disse:

Alguem ainda tem este sistema?

 

Não sei se está completo maaaas...

 

Diretório: Mods/Private Shop Item.xml:

<?xml version = "1.0" encoding = "utf-8" ?>
<mod name = "Private Shop Item" author = "MaXwEllDeN" contact = "[email protected]" version = "1.0" enabled = "no">
	<event type = "login" name = "PvShop" event = "script" value = "Private Shop/Creaturescripts.lua"/>
	<event type = "logout" name = "PvShopLOGOUT" event = "script" value = "Private Shop/Creaturescripts.lua"/>
	<event type = "preparedeath" name = "PvShopDEATH" event = "script" value = "Private Shop/Creaturescripts.lua"/>
	<talkaction words = "!pvshop" event = "script" value = "Private Shop/Talkaction.lua"/>	
</mod>

 

Diretório: Mods/Private Shop/Creaturescripts.lua:

-- ########################################################
-- #####        Name: Private Shop System             #####
-- #####        Version: 2.0                          #####
-- ########################################################
-- #####  Developed by Maxwell Alcantara[MaXwEllDeN]  #####
-- #####  Contact: [email protected]               #####
-- #####           [email protected]             #####
-- ########################################################

function onLogin(cid)
	if (getPlayerStorageValue(cid, 75431) > 0) then
		local playerguid = getPlayerGUIDByName(getCreatureName(cid))
		local ddec = 0

		for a, b in pairs(getPlayerShopLucro(playerguid)) do
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You sold ".. b[1] .. "x ".. getItemNameById(a) .. getPrefix(b[1]) ..".")
			if (getPlayerStorageValue(cid, 21147) < 0) then
				setPlayerStorageValue(cid, 21147, 0)
			end

			setPlayerStorageValue(cid, 21147, getPlayerStorageValue(cid, 21147) + b[2])
		end

		if (getPlayerStorageValue(cid, 21147) > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Total Gain: ".. getPlayerStorageValue(cid, 21147) .. " gold coin" .. getPrefix(getPlayerStorageValue(cid, 21147)) .. ".")
			doPlayerAddMoney(cid, getPlayerStorageValue(cid, 21147))
			setPlayerStorageValue(cid, 21147, -1)
		end

		deleteNPCFile(getCreatureName(cid))
		setPlayerShopLucro(playerguid, "{}")
		setPlayerStorageValue(cid, 75431, -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Private Shop disabled.")
	end

	registerCreatureEvent(cid, "PvShopLOGOUT")
	registerCreatureEvent(cid, "PvShopDEATH")
	return true
end


function onLogout(cid)
	if (getPlayerStorageValue(cid, 75431) > 0) then
		addEvent(createNPCShop, 1, getCreatureName(cid), getCreatureOutfit(cid), getPlayerGUIDByName(getCreatureName(cid)), getThingPos(cid), getCreatureLookDir(cid))
	end

	return true
end

local function aol(cid)
	if (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid) and (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 2173) then
		return true
	end
	return false
end
	
function onPrepareDeath(cid, deathList)

	if (not getPlayerBlessing(cid, 33)) and (not aol(cid)) then
		setPlayerShopItens(getPlayerGUIDByName(getCreatureName(cid)), "{}")
	end
	
	return true
end

 

Diretório: Mods/Private Shop/Talkaction.lua:

-- ########################################################
-- #####        Name: Private Shop System             #####
-- #####        Version: 2.0                          #####
-- ########################################################
-- #####  Developed by Maxwell Alcantara[MaXwEllDeN]  #####
-- #####  Contact: [email protected]               #####
-- #####           [email protected]             #####
-- ########################################################

-- bad argument #1 to 'pairs' (table expected, got nil)
-- local tb = {}
-- local function tabletama(tb)
	-- local tam = 0
	-- for i, v in pairs(tb) do
		-- tam = tam + 1
	-- end
	-- return tam
-- end

local funcs = {"on", "off", "add", "remove", "list", "help", "list"}
function onSay(cid, words, param)	
	local param = param:lower()
	local params = string.explode(param, ",")
	local param = params[1]
	local configs = _PV_SHOP_CONFIG
	if (configs.premmy) and not(isPremium(cid)) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You must have a premium account to use this system.")
	end
	if (getPlayerLevel(cid) < configs.level) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You must be at least level " .. configs.level .. " to use this system.")
	end
	if not(isInArray(funcs, param)) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You typed a invalid option, to see help window type ".. words .. " help.")
	end
	if (param == "on") then
		if (getCreatureCondition(cid, CONDITION_INFIGHT)) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't activate the system with your pz locked.")
		end
		local pos = getThingPos(cid)
		local pos1 = {x = pos.x-5, y = pos.y-5, z = pos.z}
		local pos2 = {x = pos.x+5, y = pos.y+5, z = pos.z}
		local uids = getUidsInArea(pos1, pos2)
		for _, b in pairs(uids) do
			if (not(isPlayer(b)) and not (isMonster(b))) then
				return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You're near a npc.")
			end
		end
		local pikznelis = 0
		for _, a in pairs(getPlayerShopItens(getPlayerGUIDByName(getCreatureName(cid)))) do
			pikznelis = 1
			break
		end
		if (pikznelis == 0) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You must add a item to your shop before ative it.")
		end
		setPlayerStorageValue(cid, 75431, 1)
		addEvent(doRemoveCreature, 1, cid)
	elseif (param == "add") then
		if not(params[4]) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You typed a invalid option, to see help window type ".. words .. " help.")
		end	
		local item	
		if type(errors) == "function" then
			errors(false)
			item = getItemIdByName(params[2])
			errors(true)
		else
			item = getItemIdByName(params[2], false)
		end
		if not (item) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, params[2] .." isn't a valid item.")
		end
		-- if (tabletama(getPlayerShopItens(getPlayerGUIDByName(getCreatureName(cid)))) >= configs.maxitens) then
			-- return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't have more than ".. configs.maxitens.." types of items in your Private Shop.")
		-- end
		if (isInArray(configs.notadd, item)) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't add " .. params[2] .. " to Private Shop.")
		end
		if not(tonumber(params[3])) or (tonumber(params[3]) < 1) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, params[3] .. " isn't a valid quanty.")
		end
		if (getPlayerItemCount(cid, item) < tonumber(params[3])) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You haven't ".. params[3] .." " .. params[2] .."(s).")
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You added with successful ".. params[3] .. " ".. params[2] .."(s) to your Private Shop.")
		doAddItemForPlayerShop(getPlayerGUIDByName(getCreatureName(cid)), item, params[3], params[4])
		doPlayerRemoveItem(cid, item, tonumber(params[3]))
	elseif (param == "list") then
		local itens = getPlayerShopItens(getPlayerGUIDByName(getCreatureName(cid)))
		local msgiteins = "Items in your Private Shop:\n"
		for a, b in pairs(itens) do
			msgiteins = msgiteins .. "\n".. b[1] .. " " .. getItemNameById(a) .. getPrefix(b[1]) .. " - ".. b[2] .. " Gold Coins"
		end
		local msgiteins = msgiteins .. "\nX-X-X-X-X-X-X-X-X-X-X-X-X"
			doShowTextDialog(cid, 2160, msgiteins)
	elseif (param == "remove") then
		if not(params[3]) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You typed a invalid option, to see help window type ".. words .. " help.")
		end
		if not(tonumber(params[3])) or (tonumber(params[3]) < 1) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, params[3] .. " isn't a valid quanty.")
		end
		local item = getItemIdByName(params[2])
		if not (item) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, params[2] .." isn't a item.")
		end
		local shopt = getPlayerShopItens(getPlayerGUIDByName(getCreatureName(cid)))
		if not(shopt[item]) or (tonumber(shopt[item][1]) < tonumber(params[3])) then
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You haven't ".. params[3] .." " .. params[2] .."(s) in Private Shop.")
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You removed with successful ".. params[3] .. " ".. params[2] .."(s) from your Private Shop.")
		doRemoveItemFromPlayerShop(getPlayerGUIDByName(getCreatureName(cid)), item, params[3])
		doPlayerAddItem(cid, item, tonumber(params[3]))
	elseif (param == "help") then
		local msg = "Private Shop System Help: \n \n * add - is used to add a item to your Private Shop. \n"
		local msg = msg .."     Usage Example: " .. words .. " add, item, quanty, price by unit"
		local msg = msg .."\n" .. words .. " add, demon armor, 1, 60000\n"
		local msg = msg .."\n * remove - is used to remove a item from your Private Shop. \n"
		local msg = msg .."     Usage Example: " .. words .. " remove, item, quanty"
		local msg = msg .."\n" .. words .. " remove, demon armor, 5\n"
		local msg = msg .."\n * on - is used to active your Private Shop\n"
		local msg = msg .. "\n * list - displays in screen a window containing all items that you have in your Private Shop."
		doShowTextDialog(cid, 2160, msg)
   end
   return true
end

 

Diretório: data/lib/Private Shop LIB:

-- ########################################################
-- #####        Name: Private Shop System             #####
-- #####        Version: 2.0                          #####
-- ########################################################
-- #####  Developed by Maxwell Alcantara[MaXwEllDeN]  #####
-- #####  Contact: [email protected]               #####
-- #####           [email protected]             #####
-- ########################################################

_PV_SHOP_CONFIG ={
   premmy = false,
   level = 1,
   maxitens = 10,
   notadd = {2160, 2152, 2148},
   prefix_shop = true, -- Prefixo [Shop] antes do nome do player?
}

function fileExist(file)
	return (io.open(file, "r")) and true or false
end

function getUidsInArea(ext1, ext2)
	local uids = {}
	for a = 0, ext2.x-ext1.x do
		for b = 0, ext2.y-ext1.y do
			for c = 1, 255 do
				local pos = {x = ext1.x+a, y = ext1.y+b, z = ext1.z, stackpos = c}
				local cid = getTopCreature(pos).uid
				if (isCreature(cid)) then
					table.insert(uids, cid)
				end
			end
		end
   end
   return uids
end

function printTableM(aff)
	local s = "{"
	for a, b in pairs(aff) do
		local index = "[".. a .. "]"
		if (type(a) == "string") then
			index = '["'.. a ..'"]'
		end
		if (type(b) == "table") then
			value = printTableM(b)
		elseif (type(b) == "string") then
			value = '"'.. b .. '"'
		else
			value = b
		end
		s = s .. index .. " = " .. value .. ", "
	end
	s = "{" .. s:sub(2, #s)
	return (#s < 3) and "{}" or (s:sub(1, #s-2) .. "}")
end

function deleteNPCFile(name)
	return os.remove ("data/npc/ZSHOP - ".. name ..".xml")
end

function createNPCFile(name, looktype)
	if (fileExist("data/npc/ZSHOP - ".. name .. ".xml")) then
		local fili = io.open("data/npc/ZSHOP - ".. name .. ".xml", "w+")
		fili:close()
	end
	local fili = io.open("data/npc/ZSHOP - ".. name .. ".xml", "a+")
	local nam = _PV_SHOP_CONFIG.prefix_shop and "[Shop] " or ""
	local example = [[<?xml version = "1.0" ?>
	<npc name = "%s" script = "Private Shop.lua" floorchange = "0" speed= "0" walkable = "true">
		<health now = "150" max = "150"/>
		<look type = "%d" head = "%d" body = "%d" legs = "%d" feet = "%d" addons = "%d" %s/>
	</npc>
	]]
	local mount = looktype.lookMount and "mount = \"".. looktype.lookMount .. "\"" or ""
	fili:write(example:format(nam .. name, looktype.lookType, looktype.lookHead, looktype.lookBody, looktype.lookLegs, looktype.lookFeet, looktype.lookAddons, mount))
	fili:close()
end

function createNPCShop(name, outfit, playerguid, pos, dir)
	createNPCFile(name, outfit)
	local mons = doCreateNpc("ZSHOP - ".. name, pos)
	doCreatureSetLookDir(mons, dir)
	setPlayerShopLucro(playerguid, "{}")
	setPlayerStorageValue(mons, 277531, "{x = ".. pos.x ..", y = ".. pos.y ..", z = ".. pos.z .."}")
end

function getValueFromString(str)
   return loadstring("return ".. str)()
end
_MAXSHOP_STOSHOP = 52337

function doRemoveItemFromPlayerShop(playerguid, itemid, quant)
   local shop = getPlayerShopItens(playerguid)
   local newshop = {}
   for a, b in pairs(shop) do
      if (a == itemid) then
         if (b[1]-quant > 0) then
            newshop[a] = {b[1]-quant, b[2]}
         end
      else
         newshop[a] = {b[1], b[2]}
      end
   end
   return (setPlayerShopItens(playerguid, printTableM(newshop))) and true or false
end

function doAddItemForPlayerShop(playerguid, itemid, quant, money)
	local shop = getPlayerShopItens(playerguid)
	local newshop = {}
	dd = 0
	for a, b in pairs(shop) do
		dd = 1
		if (a == itemid) then
			newshop[a] = {b[1]+quant, money}
		else
			newshop[a] = {b[1], b[2]}
		end
	end
	if not(newshop[itemid]) then
		newshop[itemid] = {quant, money}
	elseif (dd == 0) then
		newshop[itemid] = {quant, money}
	end   
   return (setPlayerShopItens(playerguid, printTableM(newshop))) and true or false
end

function installSHOPSystem()
	if not(INSTALLED) then
		if not (db.getResult("ALTER TABLE `players` ADD COLUMN `shopitens` VARCHAR( 255 )  NOT NULL DEFAULT '''{}''';")) then
			error("###@!#!@$#!#@ FALHA CR�TICA AO INSTALAR O PRIVATE SHOP SYSTEM!\n     N�o foi poss�vel criar a coluna: players.shopitens")
		end
		print("              Instala��o Shop System: Coluna players.shopitens criada com sucesso")      
	if not(db.getResult("ALTER TABLE `players` ADD COLUMN `shoplucro` VARCHAR( 255 )  NOT NULL DEFAULT '''{}''';")) then
		error("###@!#!@$#!#@ FALHA CR�TICA AO INSTALAR O PRIVATE SHOP SYSTEM!\n     N�o foi poss�vel criar a coluna: players.shoplucro")
	end
		print("              Instala��o Shop System: Coluna players.shoplucro criada com sucesso.")      
	end
end

function getPlayerShopItens(playerguid)
	local get = db.getResult("SELECT `shopitens` FROM `players` WHERE `id` = '".. playerguid.."';")
	local resultado = get:getDataString('shopitens')
	return (resultado) and loadstring("return " .. (resultado:sub(2, #resultado-1)))() or nil
end

function getPlayerShopLucro(playerguid)
	local get = db.getResult("SELECT `shoplucro` FROM `players` WHERE `id` = '".. playerguid.."';")
	local resultado = get:getDataString('shoplucro')
	return (resultado) and loadstring("return " .. (resultado:sub(2, #resultado-1)))() or nil
end

function getPrefix(val)
	if (type("val") ~= number) then
		return ""
	end
	return (val > 1) and "s" or ""
end

function valid(f, val)
	return function(...)
		if val then
			return f(...)
		end
	end
end

function doShopAddLucro(playerguid, itemid, money)
	local shop = getPlayerShopLucro(playerguid)
	local newshop = {}
	c = 0
	for a, b in pairs(shop) do
		c = 1
		if (a == itemid) then
			newshop[a] = {b[1]+1, b[2]+money}
		else
			newshop[a] = {b[1], b[2]}
		end
	end
	if not(newshop[itemid]) then
		newshop[itemid] = {1, money}
	elseif (c == 0) then
		newshop[itemid] = {1, money}
	end
	return (setPlayerShopLucro(playerguid, printTableM(newshop))) and true or false
end

function setPlayerShopItens(playerguid, shop)
	return (db.executeQuery("UPDATE `players` SET `shopitens` = '''".. shop .."''' WHERE `id` = '".. playerguid .."';")) and true or false
end

function setPlayerShopLucro(playerguid, shop)
	return (db.executeQuery("UPDATE `players` SET `shoplucro` = '''".. shop .."''' WHERE `id` = '".. playerguid .."';")) and true or false
end

local file = io.open("PrivateShopInstall.lua", "r")
local t = loadstring("return ".. file:read("*all"))() file:close()
if not(t) then
	installSHOPSystem()
	local file = io.open("PrivateShopInstall.lua", "w+") file:write("true") file:close()
end

 

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Eu achei o download fiz exatamente igual pediu, mais ao rodar o ot ele da alguns erros e não faz instalação. estou usando em otx2, mas mesmo assim obrigado por postar, vou seguir tentando.

Link para o post
Compartilhar em outros sites
14 minutos atrás, leo18dff disse:

Eu achei o download fiz exatamente igual pediu, mais ao rodar o ot ele da alguns erros e não faz instalação. estou usando em otx2, mas mesmo assim obrigado por postar, vou seguir tentando.

Se quiser postar o erro para que alguém tenha um "norte" para te ajudar.

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites
23 minutos atrás, leo18dff disse:

Após inserir os arquivos ele da no terminal
 

image.thumb.png.897d98febbc071c85f3cdedc9b5a47e6.png

 

Pesquisando na linha 205 por file temos:
image.thumb.png.5fd540e6d76306c93512c2754c5aa07a.png
 

Dentro da pasta lib temos:
image.thumb.png.43e2f6f01af7ec0246e5434abc5286b8.png

OTx 2 ultima atualização.
  

 

O PrivateShoInstall.lua fica na mesma pasta do Executável do servidor, se não me engano.

 

E dentro dele só fica um true ou false.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Ja tive um grande avanço obrigado @Adriano SwaTT.

Vou postar o modulo completo aqui caso alguem queira.

PS: Não tive nenhum erro na distro mais. Estou tentando ver como funciona agora atráves dos comandos !pvshop etc

Se eu conseguir fazer funcionar corretamente eu volto aqui obrigado.

 

Private Shop System[MaXwEllDeN].tar.gz

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 Fausto32
      Script/Tutorial+ Php +Map +Talkaction +Portal.
      Ps: Antes de falar q o topico já existe no forum teste os outros scripts
      Então começando por informações basícas :
      Para abrir o evento : /zombiestart numero de players . exemplo : /zombiestart 2
      Para Iniciar o evento sem o numero maximo de players: /zombiestart force.
      Apos aberto sempre q um player ente no portal do evento e avisado por broadcast quem
      entrou na arena e o numero de players restantes para o evento ser iniciado.
      Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena.
      Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo q durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel.
      Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros.
      Creditos: Me .. não criei mais montei peguei de varios servers/topicos e corigi os varios bugs de distro colocaria os creditos de onde peguei a maioria do script mais foi de um server sem creditos q nem era pra ter sido postado.
      Enfim Vamos ao Evento !
      Primeiro vou estar postando a pagina classica do Zombie event no Gesior que seria a parte PHP para informar os players sobre o evento.
      Pagina PHP + Tutorial de como implementar ela no seu site.
      Agora alguns mapas para o zombie event:
      Então Agora vamos ao script !
      data\creaturescripts\scripts\zombie – A pasta ‘zombie’ deve ser criada no diretorio citado.
      \data\creaturescripts\scripts\Zombie\onattack.lua
        function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end \data\creaturescripts\scripts\Zombie\ondeath.lua
        function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end \data\creaturescripts\scripts\Zombie\onthink.lua
        function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end \data\globalevents\scripts\zombie\ onstartup.lua
        function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end \data\globalevents\scripts\zombie\onthink.lua
        function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end \data\lib\zombie_event.lua
        -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end ]]-- end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" end \data\movements\scripts\zombie\ onenter.lua
        function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end \data\talkactions\scripts\zombie\ onsay.lua
        function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end data\monster\zombie_event.xml
        <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> Agora as Tags nos xml’s . /data/creaturescripts/creaturescripts.xml
        <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml
        <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml
        <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml
        <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/monsters.xml
        <monster name="Zombie Event" file="zombie_event.xml"/> Script Terminado ! Next: Tutorial de como configurar o zombie event ! Estarei postando apenas as partes q podem ou devem ser editadas em cada script. data\creaturescripts\scripts\zombiez\onattack.lua
      Next: \data\lib\zombie_event.lua
      Então galera eh isso ai .-. meu primeiro post não mim crucifiquem k Duvidas, reclamações elogios chigamentos u.u só comentar como dizia o mestre o topico ta explicado nos minimos detalhes e ''de forma bem entendida'' (entendedoresentenderam) então eh isso vlw ai a todos q mim ajudaram nisso e nem sabem ?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo