belo script mas o novo tfs ja vem com ele.
- Fórum
- OTServ
- Recursos
- Scripting
- Globalevents e Spells
- [creatuescript] Loot No Server Log
MO
3
1.7k
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char no Tibia: leviana luciferiana

16 de agosto de 2009 às 17:18



info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain
Servidor testado: TFS 0.3.1 (possivelmente em versoes anteriores)
Servidor testado2: Matriz
Autor: Mock -- eu xP
Versão: 1.2.1
Percebi que muitos otservers 8.5 não tem esse sistema justamente por o TFS nao ter integrado ele ainda, apenas matriz o possue, a certeza que esse script pode funcionar em até servidores 8.22 ou 8.1 é que ele funciona em matriz e antigamente até as versoes 8.1 e 8.22 quase todos usavam servidores a base da matriz (otserv original) e quase ninguem usava TFS, entao tive que fazer 2 versoes, só estarei postando a versão do TFS, caso alguem queira a da matriz peça por PVT.
Vamos começar.
Bom uma função que mudou de função no TFS é a getItemName, no TFS pega por UID e na matriz por itemid entao fiz algumas mudanças, mais deixe de lado vamos instalar.
Vá até a pasta creaturescripts, abra o login.lua. antes do utimo:
Adcione uma linha ficando assim:
Salve. e abra o creaturescripts.xml e adcione esta tag:
Feito o mesmo abra a pasta scripts e crie o arquivo loot.lua e insira isso:
--- Script by mock local function find(pa)--- Script by mock for i=1,255 do pa.stackpos = i local corpse = getThingfromPos(pa) if isCorpse(corpse.uid) == TRUE then if isContainer(corpse.uid) == TRUE then return corpse.uid end end end return FALSE end local function getConteiner(item)--- Script by mock if isContainer(item.uid) == FALSE then return "" end local items = getItemName(item.itemid)..": (" local g = doAddContainerItem(item.uid,2815,1) for i=1, getContainerCap(item.uid) do local k = getContainerItem(item.uid, i) if k.itemid ~= 0 then if isContainer(k.uid) == TRUE then items = items..getConteiner(k)..', ' print('o0') else if k.type > 1 then items = items..k.type..'x '..getItemNameById(k.itemid).."s, " else items = items..getItemNameById(k.itemid)..", " end end end end items = items:sub(1,#items-2)..'.' doRemoveItem(g,-1) return items..')' end function getLoot(pa,cid,nam)--- Script by mock corpse = find(pa) if corpse == FALSE then return FALSE end local g = doAddContainerItem(corpse,2815,1) local str = 'Loot de '..nam..': ' for i=1, getContainerCap(corpse) do local a = getContainerItem(corpse, i) if a.itemid ~= 0 then if isContainer(a.uid) == TRUE then str = str..getConteiner(a)..' , ' else if a.type > 1 then str = str..a.type..'x '..getItemNameById(a.itemid)..'s, ' else str = str..getItemNameById(a.itemid)..', ' end end end end doRemoveItem(g,-1) str = str:sub(1,#str-2)..'.' doPlayerSendTextMessage(cid, 23, str) end function onKill(cid, target)--- Script by mock addEvent(getLoot,100,getCreaturePosition(target),cid,getCreatureName(target)) return 1 endApos isso, salve e feche o server, nao adianta dar reload pois todos os players tem que fazer login dinovo.
Apos isso toda vez que um monstro morrer os players verão seu loot conforme a foto:
Só relembrando, tem servidores que ja possue esse sistema como a matriz, algums ja editaram o TFS inserindo esse sistema, porem o oficial não o possue então serve para ele.
Divirtam-se
Editado Agosto 16 por Mock