MatheusGlad
Conde-
Total de itens
528 -
Registro em
-
Última visita
-
Dias Ganhos
30
Tudo que MatheusGlad postou
-
Vamos Dar Uma Pkalizada No Global?
tópico respondeu ao MatheusGlad de MatheusGlad em Lixeira Pública
Demonbholder tem raiva de mim pq eu sou melhor que ele kkk coitado ( e ele se acha melhor que eu) -
Vamos Dar Uma Pkalizada No Global?
tópico respondeu ao MatheusGlad de MatheusGlad em Lixeira Pública
sabe ler? lvl 8~12 seu bixa nao 41 DSADSA -
Dai eu cave e apocarai tamo la apesar de serem 5 chares ( 3 sao meus '-') Vamo pkalizar lvl 8~12 tudo de mage blz? Quem for entrar o nome eh: Nome Rister Com rister dps do nome E o mundo eh Rubera. Faz quantos chares voce consiguir controlar na battle '-' kk LEMBRA TUDO MAGE, DRUID OU SORC
-
Hmm creio que foi pelos seguintes erros: No script do SkyDangerouas: if getPlayerStorageValue(cid, storage[1]) and getPlayerStorageValue(cid, storage[2]) == -1 then Voce tem que checar o valor das duas storages: if getPlayerStorageValue(cid, storage[1]) == -1 and getPlayerStorageValue(cid, storage[2]) == -1 then Ja no script do mulizeu, nao tem como usar isInArray para esse script.
-
Segmention fault Oo vou testar aqui ver se acontece e ja respondo LucasQuevedo Se o gold do cara que foi morto aparece no corpo dele junta sim, caso contrario nao. Voce pode ir no script que adiciona o dinheiro no player e botar essas functions: function 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 items end function doPlayerAddItemStacking(cid, itemid, quant) local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end E na hora de add o dinheiro usa o doPlayerAddItemStacking(cid, itemid, quant)
-
venoreteamwar.servegame.com 8,6 war gogo
-
http://www.xtibia.com/forum/topic/173582-talk-action-auto-gold/
-
Quem da o ultimo hit pega os loots, e em party o outro player poderia ver os itens dropados ou seja, se ele ver que dropou algo e nao esta no corpo ele pode reclamar com o amigo... como todos fariam normalmente neh '-'
-
Video demonstrando o que faz o script: Para usar a talkaction eh simples: !autoloot itens (itens separados por virgula) Exemplo: !autoloot mastermind shield, gold coin Na pasta mods, bote esse xml, e pronto estara funcionando direitinho. autoLoot.xml: <?xml version="1.0" encoding="UTF-8"?> <mod name="autoLoot" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <config name="autoLootLib"><![CDATA[ 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)) end function 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 tab end function 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 items end function 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 items end function doPlayerAddItemStacking(cid, itemid, quant) local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function corpseRetireItems(corpsepos, killer, itemsarray) local corpse = nil for i = 1, 254 do corpsepos.stackpos = i corpse = getThingFromPos(corpsepos) if corpse.uid > 0 and isCorpse(corpse.uid) then break end end local items = getContainerItems(corpse.uid) for i,x in pairs(items) do if isInArray(itemsarray, tonumber(x.itemid)) then if isItemStackable(x.itemid) then doPlayerAddItemStacking(killer, x.itemid, x.type) else doPlayerAddItem(killer, x.itemid) end doRemoveItem(x.uid, x.type) end end end ]]></config> <creaturescript type="kill" name="autoLootKill" event="script"><![CDATA[ domodlib("autoLootLib") local loots = getPlayerStorageTable(cid, 6616) if lastHit and #loots >= 1 then addEvent(corpseRetireItems, 100, getCreaturePosition(target), cid, loots) end return true ]]></creaturescript> <talkaction words="!autoloot;/autoloot" event="script"><![CDATA[ domodlib("autoLootLib") local t = string.explode(param, ",") for i,x in pairs(t) do if not getItemIdByName(x, false) then return doPlayerSendCancel(cid, "Some of these items don't exist.") end t[i] = getItemIdByName(x, false) end setPlayerStorageTable(cid, 6616, t) doPlayerSendTextMessage(cid, 25, "Auto Looting: " .. param) return true ]]></talkaction> <creaturescript type="login" name="autoLootRegister" event="script"><![CDATA[ registerCreatureEvent(cid, "autoLootKill") return true ]]></creaturescript> </mod> autoLoot.xml
-
Demonbholder mesmo vendo que voce ja tinha respondido, resolvi postar o meu, o seu script se funcionar eu acho que ele nao vai estacar os itens estacaveis e o seu script gasta mta memoria rodando em todo o container pra cada id de dinheiro. data/creaturescripts/scripts/goldKill.lua: function 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 items end function 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 items end function doPlayerAddItemStacking(cid, itemid, quant) local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function corpseRetireItems(corpsepos, killer, itemsarray) local corpse = nil for i = 1, 254 do corpsepos.stackpos = i corpse = getThingFromPos(corpsepos) if corpse.uid > 0 and isCorpse(corpse.uid) then break end end local items = getContainerItems(corpse.uid) for i,x in pairs(items) do if isInArray(itemsarray, tonumber(x.itemid)) then if isItemStackable(x.itemid) then doPlayerAddItemStacking(killer, x.itemid, x.type) else doPlayerAddItem(killer, x.itemid) end doRemoveItem(x.uid, x.type) end end end function onKill(cid, target, lastHit) local loots = {2148, 2152, 2160} if lastHit and getPlayerStorageValue(cid, 6616) == 1 then addEvent(corpseRetireItems, 100, getCreaturePosition(target), cid, loots) end return true end data/creaturescripts/creaturescripts.xml: <event type="kill" name="GoldKill" event="script" value="goldKill.lua"/> Adicione isso no login.lua: registerCreatureEvent(cid, "GoldKill") data/talkactions/scripts/autoGold.lua: function onSay(cid, words, param) setPlayerStorageValue(cid, 6616, getPlayerStorageValue(cid, 6616) == -1 and 1 or -1) doPlayerSendTextMessage(cid, 25, "Auto Loot: " .. (getPlayerStorageValue(cid, 6616) == -1 and "OFF" or "ON")) return true end data/talkactions/talkactions.xml: <talkaction words="/autogold" event="script" value="autoGold.lua"/> Obs: Meu script ainda esta com um bug, nao estaca em itens das bps dentro de bps ja concerto Pronto, creio que nao tem mais bugs mas se voce achar fala. Estaca os itens automaticamente, e funciona pra qlqr id flw
-
smp_id = 7589 -- Item a ser vendido custosmp_id = 1600 -- Valor quant = 100 function onUse(cid, item, fromPosition, itemEx, toPosition) local name = getItemNameById(smp_id) if doPlayerRemoveMoney(cid, custosmp_id) then doPlayerAddItem(cid, smp_id, quant) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have purchased " .. quant .. " ".. name .."s for ".. custosmp_id .." gold.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You need ".. custosmp_id .." gold coins for ".. quant .. " ".. name .."s.") end end
-
function onMove em Lua??? Fake? ou não? xD http://www.youtube.com/watch?v=IF_papXRJ5w
-
Eu ach que eh no map editor isso vei...
- 4 respostas
-
- ajudem por favor
- otserv
-
(e 2 mais)
Tags:
-
Tentando Entender O Funcionamento Do Table
tópico respondeu ao lailton de MatheusGlad em Lixeira Pública
tenta assim itemA = { ["ztibia"]={n=3}, ["xtibia"]={n=1}, ["ytibia"]={n=2} } itemB = {} --for cItem,v in pairs(itemA) do -- table.insert(itemB,{[ itemA[cItem].n ] = { c = cItem } }) --end itemB[3] = {c="ztibia"} itemB[1] = {c="xtibia"} itemB[2] = {c="ytibia"} for i=1,table.maxn( itemB ) do print( itemB[i].c ) -- nao lista os item... end Automatizado: itemA = { ["ztibia"]={n=3}, ["xtibia"]={n=1}, ["ytibia"]={n=2} } itemB = {} for cItem,v in pairs(itemA) do itemB[itemA[cItem].n] = {c = cItem} end for i=1,table.maxn( itemB ) do print( itemB[i].c ) -- nao lista os item... end- 2 respostas
-
- help to ficando doido
- otserv
-
(e 1 mais)
Tags:
-
Vai em data/talkactions/scripts abre o teleportto.lua e substitui por isso: function getPlayerOnlineWithIp(ip) for i,x in pairs(getPlayersOnline()) do if doConvertIntegerToIp(getPlayerIp(x)) == ip then return x end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local creature = getCreatureByName(param) local player = getPlayerByNameWildcard(param) local waypoint = getWaypointPosition(param) local tile = string.explode(param, ",") local pos = {x = 0, y = 0, z = 0} local playerbyip = getPlayerOnlineWithIp(param) if(player ~= nil and (not isPlayerGhost(player) or getPlayerGhostAccess(player) <= getPlayerGhostAccess(cid))) then pos = getCreaturePosition(player) elseif(creature ~= nil and (not isPlayer(creature) or (not isPlayerGhost(creature) or getPlayerGhostAccess(creature) <= getPlayerGhostAccess(cid)))) then pos = getCreaturePosition(creature) elseif(type(waypoint) == 'table' and waypoint.x ~= 0 and waypoint.y ~= 0) then pos = waypoint elseif(tile[2] and tile[3]) then pos = {x = tile[1], y = tile[2], z = tile[3]} elseif(isPlayer(playerbyip)) then pos = getCreaturePosition(playerbyip) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end if(not pos or isInArray({pos.x, pos.y}, 0)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Destination not reachable.") return true end pos = getClosestFreeTile(cid, pos, true, false) if(not pos or isInArray({pos.x, pos.y}, 0)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot perform action.") return true end local tmp = getCreaturePosition(cid) if(doTeleportThing(cid, pos, true) and not isPlayerGhost(cid)) then doSendMagicEffect(tmp, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_TELEPORT) end return true end Pra usar é igual seu exemplo, /goto 127.0.0.1
-
Function Canplayerbeattacked(Cid [, Bool])
tópico respondeu ao MatheusGlad de MatheusGlad em Mods, funções e outros
Okay, agora mostre-me o pog, e pra sua informaçao, a function retorna nil nao se o player pode ser atacado... TESTE ANTES DE FALAR!!! -
Eu expliquei ali nos argumentos da function.... so botar "inf" no lugar das cargas: function onSay(cid, words, param) local item = doPlayerAddItem(cid, 2125) addReflectCharges(item, "inf", 75) return TRUE end
-
Como ta o seu script de add o item que da reflect?
-
Lol esta correto, como voce fez dar esse erro? oO
-
Function Canplayerbeattacked(Cid [, Bool])
um tópico no fórum postou MatheusGlad Mods, funções e outros
A função faz com que um player possa ou nao ser atacado por PLAYERS. Para fazer em com que ele nao possa ser atacado por monstros voce tera que registrar o evento em todos os monstros do seu otserver, vou falar como fazer isso pra quem quizer. Vá em data/lib e abra o arquivo 050-function.lua e adicione essa funçao logo na primeira linha: function canPlayerBeAttacked(cid, bool) bool = bool == nil and true or bool setPlayerStorageValue(cid, 96661, bool and 0 or 1) end Agora vá em data/creaturescripts/scripts crie um arquivo .lua com o nome de playerattack.lua e bote esse script: function onCombat(cid, target) if isPlayer(target) and getPlayerStorageValue(target, 96661) == 1 then return false end return true end function onAttack(cid, target) if isPlayer(target) and getPlayerStorageValue(target, 96661) == 1 then return false end return true end Agora vá no login.lua na mesma pasta e adicione essa linha antes do ultimo return true: registerCreatureEvent(cid, "PlayerAttack") Agora vá no creaturescripts.xml e adicione essas duas tags: <event type="combat" name="PlayerAttack" event="script" value="playerattack.lua"/> <event type="attack" name="PlayerAttack" event="script" value="playerattack.lua"/> Como usar a function: canPlayerBeAttacked(cid, false) -- Isso faz com que o player nao possa ser atacado por outros players. canPlayerBeAttacked(cid) -- Isso faz com que o player possa ser atacado por outros players, voce pode usar true ou nada. Como fazer com que os monstros tambem nao possam atacar alguem com a function: Va ate o code XML do monstro e antes de </monster> voce bota isso: <script> <event name="PlayerAttack"/> </script> -
No items.xml tem que ter o slotType do item pra funcionar.
-
Pronto, fiz um video, o script usado no video está logo no final.
-
Bem, o script funciona de uma forma. Voce adiciona um item a uma pessoa, e adiciona uma porcentagem de reflexão e o numero de vezes qeu vai refletir. Só reflete dano fisico. Video: Voce pode adicionar em colares, armaduras, botas, escudos e ate mesmo armas. Instalando: Vá na pasta data/lib e crie um arquivo chamado de ReflectLib.lua e adicione isso dentro: function isHandedWeapon(itemuid) local typee = getItemWeaponType(itemuid) or 0 if typee >= 1 and typee <= 6 then return CONST_SLOT_RIGHT end return -1 end function getItemType(itemid) local slottypes = {"head", "body", "legs", "feet", "ring", "necklace"} local consts = { ["head"] = CONST_SLOT_HEAD, ["armor"] = CONST_SLOT_ARMOR, ["legs"] = CONST_SLOT_LEGS, ["feet"] = CONST_SLOT_FEET, ["ring"] = CONST_SLOT_RING, ["necklace"] = CONST_SLOT_NECKLACE } local arq = io.open("data/items/items.xml", "r"):read("*all") local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>') local slot = "" for i,x in pairs(slottypes) do if attributes:find(x) then slot = x break end end if slot == "body" then slot = "armor" end return consts[slot] end function addReflectCharges(item, charges, reflectpercent) if charges ~= "inf" then charges = charges+1 doItemSetAttribute(item, "mcharges", charges) doItemSetAttribute(item, "charges", charges) doItemSetAttribute(item, "name", getItemNameById(getThing(item).itemid) .. " that is brand-new") else doItemSetAttribute(item, "charges", -1) doItemSetAttribute(item, "mcharges", "inf") end doItemSetAttribute(item, "reflect", reflectpercent) doItemSetAttribute(item, "description", "That item reflects " .. reflectpercent .. " percent of physical damage.") end function renewCharges(item) if getItemAttribute(item, "charges") and getItemAttribute(item, "mcharges") ~= "inf" then doItemSetAttribute(item, "charges", getItemAttribute(item, "mcharges")) doItemSetAttribute(item, "name", getItemNameById(getThing(item).itemid) .. " that is brand-new") end end Agora vá em data/creaturescripts/scripts e adicione o script reflectDamage.lua com esse script: function onStatsChange(cid, attacker, type, combat, value) local slots = {CONST_SLOT_HEAD, CONST_SLOT_NECKLACE, CONST_SLOT_ARMOR, CONST_SLOT_RIGHT, CONST_SLOT_LEFT, CONST_SLOT_LEGS, CONST_SLOT_FEET, CONST_SLOT_RING} local reflectpercent = 0 local itens = {} for i = 1, #slots do if getPlayerSlotItem(cid, slots[i]).uid > 1 and (getItemType(getPlayerSlotItem(cid, slots[i]).itemid) == slots[i] or isInArray({CONST_SLOT_RIGHT, CONST_SLOT_LEFT}, isHandedWeapon(getPlayerSlotItem(cid, slots[i]).uid))) and getItemAttribute(getPlayerSlotItem(cid, slots[i]).uid, "mcharges") and (getItemAttribute(getPlayerSlotItem(cid, slots[i]).uid, "charges") > 1 or getItemAttribute(getPlayerSlotItem(cid, slots[i]).uid, "mcharges") == "inf") then reflectpercent = reflectpercent+getItemAttribute(getPlayerSlotItem(cid, slots[i]).uid, "reflect") table.insert(itens, getPlayerSlotItem(cid, slots[i])) end end if combat == 1 and reflectpercent > 0 then if math.ceil(-value*((100-reflectpercent)/100)) < 0 then doCreatureAddHealth(cid, math.ceil(-value*((100-reflectpercent)/100))) doSendAnimatedText(getCreaturePosition(cid), math.ceil(value*((100-reflectpercent)/100)), COLOR_RED) local a = doCreateItem(2019, 2, getCreaturePosition(cid)) doSendMagicEffect(getCreaturePosition(cid), 0) doDecayItem(a) else doSendMagicEffect(getCreaturePosition(cid), 3) end if math.ceil(-value*(reflectpercent/100)) < 0 then doCreatureAddHealth(attacker, math.ceil(-value*(reflectpercent/100))) doSendAnimatedText(getCreaturePosition(attacker), math.ceil(value*(reflectpercent/100)), COLOR_GREY) local a = doCreateItem(2019, 2, getCreaturePosition(attacker)) doSendMagicEffect(getCreaturePosition(attacker), 9) doDecayItem(a) end for i,x in pairs(itens) do if getItemAttribute(x.uid, "mcharges") ~= "inf" then doItemSetAttribute(x.uid, "charges", getItemAttribute(x.uid, "charges")-1) doItemSetAttribute(x.uid, "name", getItemNameById(x.itemid) .. " that has " .. getItemAttribute(x.uid, "charges")-1 .. " charge" .. (getItemAttribute(x.uid, "charges")-1 > 1 and "s" or "") .. " left") end end else return TRUE end end Agora na mesma pasta, procure por login.lua, e antes do ultimo return true, adicione essa linha: registerCreatureEvent(cid, "ReflectDamage") Agora vá em creaturescripts.xml e adicione esta tag: <event type="statschange" name="ReflectDamage" event="script" value="reflectDamage.lua"/> Pronto, o script esta pronto para uso. O script segue com tais funçoes para voce usar em outros scripts: addReflectCharges(item, charges, reflectpercent) Função: Ela é o coraçao do script, sem ela voce nao faz nada, voce usa ela pra adicionar cargas a um item qualquer, des de que seja equipavel. item - O uid do item que vai ser adicionado as cargas. charges - Numero de cargas, caso voce use "inf", assim mesmo com as aspas, o item tera infinitas cargas. reflectpercent - Porcentagem de reflexão que o item vai ter. renewCharges(item) Função: Recarregar as cargas de um item. item - O uid do item que vai ser recarregado. O script usado para adicionar o colar foi uma talkaction assim: function onSay(cid, words, param) local item = doPlayerAddItem(cid, 2125) addReflectCharges(item, 40, 75) return TRUE end
-
Eu tava zuando rairiariairai. pokerface
-
mimimimimimi
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.