Ir para conteúdo

viimalagogin

Campones
  • Total de itens

    24
  • Registro em

  • Última visita

Posts postados por viimalagogin

  1. @Crypter O channel do cast é simplesmente o Private Chat Channel do player. O ID era aquele que eu mencionei no começo.
    Sim, existe a função de abrir channel nas sources. Tanto que eu uso pra abrir o Trade quando o player loga. Então funciona.

    Porem não sei como fazer pro player abrir o private chat channel (ID: 65535). Se conseguir dar alguma luz, ja me ajuda bastante!

  2.  

    Olá, galera do xTibia. Estou com umas sources de OTX que funciona certinho o Cast System com site e tudo mais!

     

     

    Único BUG que estou tendo é que quando o player lança o comando: /cast on - ele não abre o channel de conversas (Private Chat Channel) com os Spectadores.

     

     

     

     

     

    Ja tentei usar o seguinte comando abaixo e, mesmo assim não funciona.

     

     

    
    

    doPlayerOpenChannel(cid, 65535)

     

    Alguem consegue dar uma luz pelo menos, dando qualquer dica já é válida pra como solucionar o erro!

     

     

    QUALQUER TIPO DE AJUDA, REP+!!!! Obrigado

     

     

  3. Ainda não deu amigo, substitui e ainda da o mesmo erro. Tem mais alguma opinião ai do que pode ser?

    Isso é o que acontece quando tento adicionar outro item na lista:

    [Error - TalkAction Interface]local cid = 268446042local words = "!autoloot"local param = "add, dragon scale mail"local channel = 65534domodlib('Loot_func')local t = string.explode(string.lower(param), ",")if info.OnlyPremium == true and not isPremium(cid) thendoPlayerSendCancel(cid, "you must be a premium account.") return trueelseif not t[1] thenShowItemsTabble(cid) return trueelseif tonumber(t[1]) or tonumber(t[2]) thendoPlayerSendCancel(cid, "enter!autoloot add,name or !autoloot remove,name") return trueelseif isInArray({"add","remove"}, tostring(t[1])) thenlocal func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or falselocal item = ExistItemByName(tostring(t[2]))if not item thendoPlayerSendCancel(cid, "This item does not exist.") return trueendlocal itemlist = getItemIdByName(tostring(t[2]))if check == true and isInArray(info.BlockItemsList, itemlist) thendoPlayerSendCancel(cid, "You can not add this item in the list!") return trueelseif isInTable(cid, itemlist) == check thendoPlayerSendCancel(cid, "This Item "..(check == true and "already" or "is not").." in your list.") return trueendfunc(cid, itemlist)doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "you added the item "..t[2].." in the list" or "you removed the item "..t[2].." from the list") return trueendreturn trueDescription:[string "info = {..."]:11: attempt to concatenate local 'x' (a table value)

     

    Vou explicar melhor o problema:

    Quando eu pego um char que nunca executou o comando, ele funciona normal, ele abre a lista sem ter adicionado nenhum item. Porem, apos eu adicionar qualquer item, ele passa a recolher o mesmo, mas buga, não consigo mais abrir a lista de items e nem remove-lo. Ai fica dando estes erros na distro.

  4. Olá galera. Eu queria um script de anuncio de mortes que quando o player MORRE pra mais de 1 pessoa, mostrasse TODOS que o atacaram! Assim também com os monsters!

     

    Eu tenho um que, mesmo 10 PLAYERS atacando 1 Player, só mostra no default aquele que deu o último hit. Segue abaixo o script usado:

    QUALQUER TIPO DE AJUDA, EU DOU REP+!!!! OBRIGADO A TODOS!

     

    -- Coded by Zoom..local info, win, lose = "Death Channel: %s [Level: %s] foi mort%s pelo %s %s%s", "%s obteve %s frags seguidos apos derrotar o player %s.", "%s acabou de impedir que %s fizesse uma sequencia de %s frags seguidos."local frags, storage = {10, 15, 20, 25, 30, 35, 40, 45, 50}, 30045function onDeath(cid, corpse, deathList, lastHitKiller, mostDamageKiller)    if(not isPlayer(cid)) then        return true    end        local target = deathList[1]    doCreatureSetStorage(target, storage, getCreatureStorage(target, storage) + (getCreatureStorage(target, storage) == -1 and 2 or 1))        for _, pid in ipairs(getPlayersOnline()) do        doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_ORANGE, 0xF)        for _, frag in ipairs(frags) do            if(getCreatureStorage(target, storage) == frag) then                doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_MANAGEMENT, 0xF)            end                        if(getCreatureStorage(cid, storage) >= frag) then                doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), getCreatureStorage(cid, storage)+1), TALKTYPE_GAMEMASTER_CHANNEL, 0xF)            end        end    end        doCreatureSetStorage(cid, storage, 0)    return trueend

     

  5. Olá pessoal, eu tenho esse script de autoloot no meu servidor e ele funciona POR PARTES.

    • Funciona apenas recolhimento dos Golds, Mais Slots para players premium ou não.

     

    • Não funciona o recolhimento dos items, qualquer que seja o item, ele manda mensagem falando que não existe. "THIS ITEM DOES NOT EXIST"

     

    Gostaria que ele recolhesse todos os items normalmente!

     

    Eu uso esse script MODS abaixo:

    <?xml version="1.0" encoding="ISO-8859-1"?><mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes"><config name="Loot_func"><![CDATA[info = {	AutomaticDeposit = true,	BlockMonsters = {},	BlockItemsList = {2123,2515},	Max_Slots = {free = 2, premium = 5},	Storages = {27000,28001,28002}}function setPlayerStorageTable(cid, storage, tab)	local tabstr = "&"	for i,x in pairs(tab) do		tabstr = tabstr .. i .. "," .. x .. ";"	end	setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1))endfunction getPlayerStorageTable(cid, storage)	local tabstr = getPlayerStorageValue(cid, storage)	local tab = {}	if type(tabstr) ~= "string" then		return {}	end	if tabstr:sub(1,1) ~= "&" then		return {}	end	local tabstr = tabstr:sub(2, #tabstr)	local a = string.explode(tabstr, ";")	for i,x in pairs(a) do		local b = string.explode(x, ",")		tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]	end	return tabendfunction isInTable(cid, item)	for _,i in pairs(getPlayerStorageTable(cid, info.Storages[1]))do		if tonumber(i) == tonumber(item) then			return true		end	end	return falseendfunction addItemTable(cid, item)	local x = {}	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do		table.insert(x,getPlayerStorageTable(cid, info.Storages[1])[i])	end	if x ~= 0 then		table.insert(x,tonumber(item))		setPlayerStorageTable(cid, info.Storages[1], x)	else		setPlayerStorageTable(cid, info.Storages[1], {item})	endendfunction removeItemTable(cid, item)	local x = {}	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do		table.insert(x,getPlayerStorageTable(cid, info.Storages[1])[i])	end	for i,v in ipairs(x) do		if tonumber(v) == tonumber(item) then			table.remove(x,i)		end	end	return setPlayerStorageTable(cid, info.Storages[1], x)endfunction ShowItemsTabble(cid)	local n,str = 0,"[+] Auto Loot Commands [+]\n\n!autoloot item name --> To add ou Remove item from list.\n!autoloot money --> To collect gold automatically.\n!autoloot clear --> To clear the list.\n!autoloot on/off --> To enable or disable the collecting of items in the system.\n\n[+] Auto Loot Info [+]\n\nSystem: "..(getPlayerStorageValue(cid, info.Storages[3]) <= 0 and "Activated" or "Disabled")..".\nGold Collecting: "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "Disabled")..".\nBalance Total: ["..getPlayerBalance(cid).."] gp's.\nMaximum Slots: ["..#getPlayerStorageTable(cid, info.Storages[1]).."/"..(isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\n[+] Auto Loot Slots [+]\n\n"	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do		n = n + 1		str = str.."Slot "..n.." - "..getItemNameById(getPlayerStorageTable(cid, info.Storages[1])[i]).."\n"	end	return doPlayerPopupFYI(cid, str)endfunction getContainerItems(containeruid)	local items = {}	local containers = {}	if type(getContainerSize(containeruid)) ~= "number" then		return false	end	for slot = 0, getContainerSize(containeruid)-1 do		local item = getContainerItem(containeruid, slot)		if item.itemid == 0 then			break		end		if isContainer(item.uid) then			table.insert(containers, item.uid)		end		table.insert(items, item)	end	if #containers > 0 then		for i,x in ipairs(getContainerItems(containers[1])) do			table.insert(items, x)		end		table.remove(containers, 1)	end	return itemsendfunction getItemsInContainerById(container, itemid) -- Function By Kydrai	local items = {}	if isContainer(container) and getContainerSize(container) > 0 then		for slot=0, (getContainerSize(container)-1) do			local item = getContainerItem(container, slot)			if isContainer(item.uid) then				local itemsbag = getItemsInContainerById(item.uid, itemid)				for i=0, #itemsbag do					table.insert(items, itemsbag[i])				end			else				if itemid == item.itemid then					table.insert(items, item.uid)				end			end		end	end	return itemsendfunction doPlayerAddItemStacking(cid, itemid, amount) -- revisado	local item, _G = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid), 0	if #item > 0 then		for _ ,x in pairs(item) do			local ret = getThing(x)			if ret.type < 100 then				doTransformItem(ret.uid, itemid, ret.type+amount) 				if ret.type+amount > 100 then					doPlayerAddItem(cid, itemid, ret.type+amount-100)				end				break			else				_G = _G+1			end		end		if _G == #item then			doPlayerAddItem(cid, itemid, amount)		end	else		return doPlayerAddItem(cid, itemid, amount)	endendfunction AutomaticDeposit(cid,item,n)	local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1)	return doPlayerDepositMoney(cid, deposit)endfunction corpseRetireItems(cid, pos)	local check = false	for i = 0, 255 do		pos.stackpos = i		tile = getTileThingByPos(pos)		if tile.uid > 0 and isCorpse(tile.uid) then			check = true break		end	end	if check == true then		local items = getContainerItems(tile.uid)		for i,x in pairs(items) do			if isInArray(getPlayerStorageTable(cid, info.Storages[1]), tonumber(x.itemid)) or getPlayerStorageValue(cid, info.Storages[2]) > 0 and isInArray({2148,2152,2160},tonumber(x.itemid)) then				if isItemStackable(x.itemid) then					doPlayerAddItemStacking(cid, x.itemid, x.type)					if info.AutomaticDeposit == true and isInArray({2148,2152,2160}, tonumber(x.itemid)) then						AutomaticDeposit(cid,x.itemid,x.type)					end				else					doPlayerAddItem(cid, x.itemid)				end				doRemoveItem(x.uid)			end		end	endend]]></config><event type="login" name="LootLogin" event="script"><![CDATA[function onLogin(cid)	registerCreatureEvent(cid, "LootEventKIll")	if isPremium(cid) and getPlayerStorageValue(cid, 27001) <= 0 then		setPlayerStorageValue(cid, 27001, 1)	elseif getPlayerStorageValue(cid, 27001) > 0 and not isPremium(cid) then		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!")		setPlayerStorageValue(cid, 27001, -1)		setPlayerStorageValue(cid, info.Storages[1], -1)	end	return trueend]]></event><event type="kill" name="LootEventKIll" event="script"><![CDATA[domodlib('Loot_func')function onKill(cid, target, lastHit) 	if isPlayer(cid) and getPlayerStorageValue(cid, info.Storages[3]) <= 0 and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then		addEvent(corpseRetireItems, 0, cid ,getThingPos(target))	end	return trueend]]></event><talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[domodlib('Loot_func')local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.freeif not param or param == "" then	ShowItemsTabble(cid) return trueelseif tonumber(param) then	doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return trueelseif isInArray({"clean","limpar", "clear"}, param) then	setPlayerStorageValue(cid, info.Storages[1], -1)	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return trueelseif isInArray({"start","stop","on","off"}, param) then	setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0)	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "Stopped" or "Started")..".") return trueelseif isInArray({"money","gold","gps","dinheiro"}, param) then	setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0)	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Gold Colleting "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return trueendlocal item = getItemIdByName(param, false)if not item then	doPlayerSendCancel(cid, "This item does not exist.") return trueendlocal var = isInTable(cid, item)if isInArray({2148,2152,2160},item) then 	doPlayerSendCancel(cid, "Enter !autoloot money to add money in your list!") return true	elseif isInArray(info.BlockItemsList, item) then	doPlayerSendCancel(cid, "You can not add this item in the list!") return trueelseif not var and #getPlayerStorageTable(cid, info.Storages[1]) >= slots then	doPlayerSendCancel(cid, "max "..slots.." from auto loot") return trueendif not var then	addItemTable(cid, item)else	removeItemTable(cid, item)enddoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "you added the item "..param.." in the list" or "you removed the item "..param.." from the list")return true]]></talkaction></mod>

     

    QUALQUER TIPO DE AJUDA, OU SOLUÇÃO EU DOU +REP!!! OBRIGADO!!!

  6. Então amigo, eu fiz desse jeito, mas toda vez que da 18:00 ele da um erro no distro.

    (luaDoCreatureExecuteTalkAction) Creature not found

    <globalevent name="castlewar" time="18:00" event="script" value="castlewarglobal.lua"/>
    function onTime()    local value = 0    for a, cid in ipairs(getOnlinePlayers()) dolocal   value = 1    if value >= 1 then    doCreatureExecuteTalkAction(cid, "/castle start", true)    return trueendend    return trueend

     

  7. Quando eu abro alguma coisa do tipo: backpack, bag, corpo, dp (QUALQUER COISA) e ando a 2 sqm longe do item, a janela da bp ainda permanece aberta!! Isso acontece até com player normal. Os slot ficam congelados la. Ta ai um exemplo nas imagens:

     

    ABRINDO A BP AO LADO DELA (NORMALMENTE):

    595e680c2dbd7_bp1.thumb.png.3d5531c6323a24a6203aac8c679e77e6.png

     

     

    APOS ANDAR 2 SQM LONGE DELA (PERMANECENDO ABERTA):

    595e683d6daef_bp2.thumb.png.dead19bb21a44d9bd5fdec5ab4291474.png.

     

     

    E nao sei como arrumar isso. Me ajudem dando dicas, sugestões, qualquer coisa, opiniões POR FAVOR!! Já me ajuda a procura o problema, OBRIGADO!!!! +REP

    595e680c2dbd7_bp1.thumb.png.3d5531c6323a24a6203aac8c679e77e6.png

    595e683d6daef_bp2.thumb.png.dead19bb21a44d9bd5fdec5ab4291474.png

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...