Ir para conteúdo

[TalkAction] Retirando Items Editados/indesejados Do Seu Mapa


noobinhu

Posts Recomendados

Bom, tenho percebi a má fé dos mappers hoje em dia, que em grande parte se utilizam de lugares escondidos, então fiz um script que checa tile por tile os items que ali existem e então, caso for um item suspeito, adiciona numa tabela este item, junto com sua posição.

 

Este script nesta versão, está verificando items de houses também, eu fiz um pouco correndo e não fiz perfeito por isto então.

 

O script não retira os items do mapa, simplesmente faz o log para você ir até algum map editor retirá-los.

 

Screenshoots:

check_items1.png

 

check_items2.png

 

Script LUA (checkitems.lua):

-- configs

delay = 2000 -- delay em milisegundos de cada tile a ser checado, não troque

stackpos_delay = 100 -- delay em milisegundos de cada stackpos a ser checada, não troque

startPosition = {

x = 100,

y = 100,

z = 2,

stackpos = 0

} -- de onde começa a ser checado (todos valores têm que ser menores de onde termina)

 

finishPosition = {

x = 1000,

y = 1000,

z = 14,

stackpos = 7

} -- posição que acaba de checar (todos valores têm que ser maiores de onde começa)

-- não edite as posições caso não saiba como configurá-las

 

GROUP_ALLOWED = 5 -- players com group_id maior que este poderão executar a talkaction

 

editedItems = {

2195, -- boots of haste

2206, -- time ring

2342, -- helmet of the ancients

2343, -- helmet of the ancients

2358, -- boots of waterwalking

2381, -- halberd

2387, -- double axe

2390, -- magic longsword

2391, -- war hammer

2392, -- fire sword

2393, -- giant sword

2396, -- ice rapier

2400, -- magic sword

2407, -- bright sword

2408, -- warlord sword

2414, -- dragon lance

2415, -- great axe

2421, -- thunder hammer

2424, -- silver mace

2425, -- obsidian lance

2426, -- naginata

2427, -- guardian halberd

2430, -- knight axe

2431, -- stonecutter axe

2432, -- fire axe

2433, -- enchanted staff

2434, -- dragon hammer

2435, -- dwarven axe

2436, -- skull staff

2437, -- golden mace

2438, -- epee

2440, -- daramanian waraxe

2443, -- ravager's axe

2444, -- hammer of wrath

2445, -- crystal mace

2446, -- pharaoh sword

2447, -- twin axe

2451, -- djinn blade

2452, -- heavy mace

2453, -- arcane staff

2454, -- war axe

2457, -- steel helmet

2462, -- devil helmet

2463, -- plate armor

2464, -- chain armor

2465, -- brass armor

2466, -- golden armor

2469, -- dragon scale legs

2470, -- golden legs

2471, -- golden helmet

2472, -- magic plate armor

2474, -- winged helmet

2475, -- warrior helmet

2476, -- knight armor

2477, -- knight legs

2479, -- strange helmet

2483, -- scale armor

2486, -- noble armor

2487, -- crown armor

2488, -- crown legs

2489, -- dark armor

2490, -- dark helmet

2491, -- crown helmet

2492, -- dragon scale mail

2493, -- demon helmet

2494, -- demon armor

2495, -- demon legs

2496, -- horned helmet

2497, -- crusader helmet

2498, -- royal helmet

2499, -- amazon helmet

2500, -- amazon armor

2501, -- ceremonial mask

2502, -- dwarven helmet

2503, -- dwarven armor

2504, -- dwarven legs

2505, -- elven armor

2506, -- dragon scale helmet

2507, -- elven legs

2514, -- mastermind shield

2516, -- dragon shield

2517, -- shield of honour

2519, -- crown shield

2520, -- demon shield

2522, -- great shield

2523, -- blessed shield

2528, -- tower shield

2534, -- vampire shield

2536, -- medusa shield

2537, -- amazon shield

2539, -- phoenix shield

2542, -- tempest shield

2547, -- power bolt

2640, -- soft boots

2644, -- bunny slippers

2645, -- steel boots

2646, -- golden boots

2647, -- plate legs

2656, -- blue robe

3961, -- lich staff

3962, -- beastslayer axe

3965, -- hunting spear

3968, -- leopard armor

3969, -- horseman helmet

3972, -- beholder helmet

3982, -- crocodile boots

5462, -- pirate boots

5741, -- skull helmet

6132, -- soft boots

6391, -- nightmare shield

6433, -- necromancer shield

6528, -- avenger

6529, -- infernal bolt

6553, -- ruthless axe

7363, -- piercing bolt

7365, -- onyx arrow

7367, -- enchanted spear

7368, -- assassin star

7378, -- royal spear

7379, -- brutetamer's staff

7380, -- headchopper

7382, -- demonrage sword

7383, -- relic sword

7384, -- mystic blade

7386, -- mercenary sword

7387, -- diamond sceptre

7388, -- vile axe

7389, -- heroic axe

7390, -- justice seeker

7391, -- thaian sword

7392, -- orcish maul

7402, -- dragon slayer

7403, -- berserker

7404, -- assassin dagger

7405, -- havoc blade

7406, -- blacksteel sword

7407, -- haunted blade

7408, -- wyvern fang

7410, -- queen's sceptre

7411, -- ornamented axe

7412, -- butcher's axe

7413, -- titan axe

7414, -- abyss hammer

7415, -- cranial basher

7416, -- bloody edge

7417, -- runed sword

7418, -- nightmare blade

7419, -- dreaded cleaver

7420, -- reaper's axe

7422, -- jade hammer

7424, -- lunar staff

7426, -- amber staff

7427, -- chaos mace

7428, -- bonebreaker

7429, -- blessed sceptre

7430, -- dragonbone staff

7431, -- demonbone

7432, -- furry club

7433, -- ravenwing

7434, -- royal axe

7436, -- angelic axe

7437, -- sapphire hammer

7449, -- crystal sword

7451, -- shadow sceptre

7452, -- spiked squelcher

7453, -- executioner

7454, -- glorious axe

7456, -- noble axe

7457, -- fur boots

7461, -- krimhorn helmet

7462, -- ragnir helmet

7463, -- mammoth fur cape

7730, -- blue legs

7745, -- relic sword

7746, -- mystic blade

7747, -- blacksteel sword

7748, -- dragon slayer

7750, -- knight axe

7751, -- heroic axe

7752, -- headchopper

7753, -- war axe

7755, -- crystal mace

7756, -- cranial basher

7757, -- orcish maul

7758, -- war hammer

7764, -- relic sword

7765, -- mystic blade

7766, -- blacksteel sword

7767, -- dragon slayer

7769, -- knight axe

7770, -- heroic axe

7771, -- headchopper

7772, -- war axe

7774, -- crystal mace

7775, -- cranial basher

7776, -- orcish maul

7777, -- war hammer

7855, -- relic sword

7856, -- mystic blade

7857, -- blacksteel sword

7858, -- dragon slayer

7860, -- knight axe

7861, -- heroic axe

7862, -- headchopper

7863, -- war axe

7865, -- crystal mace

7866, -- cranial basher

7867, -- orcish maul

7868, -- war hammer

7870, -- relic sword

7871, -- mystic blade

7872, -- blacksteel sword

7873, -- dragon slayer

7875, -- knight axe

7876, -- heroic axe

7877, -- headchopper

7878, -- war axe

7880, -- crystal mace

7881, -- cranial basher

7882, -- orcish maul

7883, -- war hammer

7884, -- terra mantle

7885, -- terra legs

7886, -- terra boots

7891, -- magma boots

7892, -- glacier shoes

7893, -- lightning boots

7894, -- magma legs

7895, -- lightning legs

7896, -- glacier kilt

7897, -- glacier robe

7898, -- lightning robe

7899, -- magma coat

8819, -- magician's robe

8821, -- witchhunter's cloak

8865, -- dark lord's cape

8866, -- serpent coat

8867, -- dragon robe

8868, --

8869, -- greenwood coat

8870, -- spirit cloak

8871, -- focus cape

8872, -- belted cape

8877, -- lavos armor

8878, -- crystalline armor

8879, -- voltage armor

8880, -- swamplair armor

8881, -- fireborn giant armor

8882, -- earthborn titan armor

8883, -- windborn colossus armor

8884, -- oceanborn leviathan armor

8885, -- divine plate

8886, -- molten plate

8887, -- frozen plate

8888, -- master archer's armor

8889, -- skullcracker armor

8890, -- robe of the underworld

8891, -- paladin armor

8892, -- ethno coat

8906, -- fiery rainbow shield

8907, -- icy rainbow shield

8908, -- sparking rainbow shield

8909, -- terran rainbow shield

8924, -- hellforged axe

8925, -- solar axe

8927, -- dark trinity mace

8928, -- obsidian truncheon

8929, -- stomper

8930, -- emerald sword

8932, -- calamity

9776, -- yalahari armor

9777, -- yalahari leg piece

9932, -- firewalker boots

9933 -- firewalker boots

} -- items que serão acusados no script, caso encontrados em algum tile

-- end configs

 

function checkStackPos(parameters)

cid = parameters.cid

position = parameters.position

stackpos = position.stackpos

loopFinished = true

if (stackpos <= finishPosition.stackpos) then

loopFinished = false

item = getThingfromPos(position)

itemid = item.itemid

if (itemid == 0) then

itemname = "Nothing"

else

itemname = getItemNameById(itemid)

end

doPlayerSendTextMessage(cid,20,"Position: (X: "..position.x..", Y: "..position.y..", Z: "..position.z..") Stackpos: "..position.stackpos..", Item: "..itemname.."")

if (isInArray(editedItems, itemid) == TRUE and itemid > 0) then

doPlayerSendTextMessage(cid,20,"AN EDITED ITEM FOUND!!!")

db.executeQuery("INSERT INTO `mapitems_logs` VALUES("..itemid..",'"..itemname.."',"..position.x..","..position.y..","..position.z..","..position.stackpos..")")

end

position.stackpos = position.stackpos + 1

else

position.stackpos = startPosition.stackpos

end

 

if (loopFinished == false) then

stackpos_parameters = {

cid = cid,

position = position

}

addEvent(checkStackPos,stackpos_delay,stackpos_parameters)

else

if (currentlyPos.y < finishPosition.y) then

currentlyPos.y = currentlyPos.y + 1

else

currentlyPos.y = startPosition.y

currentlyPos.x = currentlyPos.x + 1

end

if (currentlyPos.x > finishPosition.x) then

currentlyPos.z = currentlyPos.z + 1

currentlyPos.x = startPosition.x

currentlyPos.y = startPosition.y

end

end

end

 

function checkTile(parameters)

cid = parameters.cid

currentlyPos = parameters.position

loopFinished = true

if (currentlyPos.z <= finishPosition.z) then

loopFinished = false

doSendMagicEffect(currentlyPos, 6)

stackpos_parameters = {

cid = cid,

position = currentlyPos

}

addEvent(checkStackPos,0,stackpos_parameters)

doPlayerSendTextMessage(cid,20,"Checking Position (X: "..currentlyPos.x..", Y: "..currentlyPos.y..", Z: "..currentlyPos.z..")")

end

if (loopFinished == false) then

parameters = {

cid = cid,

position = currentlyPos

}

addEvent(checkTile,0,parameters)

else

doPlayerSendTextMessage(cid,20,"Log complete! Look at the table `mapitems_logs` created on your database.")

end

end

 

function onSay(cid, words, param)

if (getPlayerGroupId(cid) >= GROUP_ALLOWED) then

currentlyPos = {x=startPosition.x,y=startPosition.y,z=startPosition.z,stackpos=startPosition.st

ackpos}

parameters = {

cid = cid,

position = currentlyPos

}

db.executeQuery("DROP TABLE IF EXISTS `mapitems_logs`")

db.executeQuery("CREATE TABLE `mapitems_logs` (`itemid` INT( 15 ) NOT NULL ,`itemname` VARCHAR( 255 ) NOT NULL ,`x` INT( 15 ) NOT NULL ,`y` INT( 15 ) NOT NULL ,`z` INT( 15 ) NOT NULL ,`stackpos` INT( 15 ) NOT NULL )")

addEvent(checkTile,delay,parameters)

else

doPlayerSendTextMessage(cid,20,"Your group ID is lower than needed.")

end

end

 

Tag XML:

<talkaction words="/checkitems" event="script" value="checkitems.lua"/>

 

Configure a parte em negrito que se auto explica.

Script testado e feito inteiramente no distro cryingdamson3.

 

Este script demora a ser executado, dependendo do mapa (5000~10000 sqms²) pode levar até 5 horas... então execute em um servidor sem ninguém online, só você e o mapa, e então fique afk :)

 

Para checar o log depois basta entrar na tabela `mapitems_logs` que é criada na database do seu otserver.

 

É isso, até mais.

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

Gostei dessa noobinho, ja tive varios servers que tinham demons helmets no chão até Mpa's¬¬

Mas me tira uma Duvida:

Esse log funciona com Todos os Map Editors ou só com algum especifico?

 

Aguardo respostas,

Abraços.

Link para o comentário
Compartilhar em outros sites

já que é só um log, qualquer mapa neste distro... não importando o map editor ou outro fator, simplesmente o distro, para que as funções sejam corretas.

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

Bommm

 

Gostei

 

 

:]

 

Off~~

 

Em fevereiro axo, fui contratado pra ser mapper do lvlupa

 

O cara pediu pra faze uma hunt de bog, eu ia esconde o set editado do ot, se pá o cara nem ia ve

 

EHUEHUEHUEE

 

Mas dai desisti

 

:]

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

[26/05/2009 01:05:26] data/talkactions/scripts/checkitems.lua:376: attempt to index global 'db' (a nil value)

[26/05/2009 01:05:26] stack traceback:

[26/05/2009 01:05:26] data/talkactions/scripts/checkitems.lua:376: in function <data/talkactions/scripts/checkitems.lua:369>

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...