Pesquisar na Comunidade
Mostrando resultados para as tags ''xotservx''.
Encontrado 4 registros
-
autotarget.xml: [LUA]<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Auto Target System" version="1.0" author="xOtservx" enabled="yes"> <event type="login" name="AutoTargetLogin" event="script"><![CDATA[ function onLogin(cid) return registerCreatureEvent(cid, "AutoTarget") end]]></event> <event type="think" name="AutoTarget" event="script"><![CDATA[ function onThink(cid, interval) if getPlayerStorageValue(cid, 25471) ~= "on" then return true end if getCreatureTarget(cid) then return true end local monsterScreen = {} for x = -7, 7 do for y = -5, 5 do creature = getTopCreature({x = getThingPos(cid).x + x, y = getThingPos(cid).y + y, z = getThingPos(cid).z}).uid if isMonster(creature) then table.insert(monsterScreen, creature) end end end if #monsterScreen == 0 then return true end monsterTarget = #monsterScreen[1] if #monsterTarget > 1 then local type = type(getPlayerStorageValue(cid, 25472)) ~= "string" and "distancia" or getPlayerStorageValue(cid, 25471) for i = 1, #monsterScreen do if type == "distancia" then if getDistanceBetween(getThingPos(monsterScreen[i]), getThingPos(cid)) < getDistanceBetween(getThingPos(monsterTarget), getThingPos(cid)) then monsterTarget = monsterScreen[i] end elseif type == "forte" then if getCreatureMaxHealth(monsterScreen[i]) > getCreatureMaxHealth(monsterTarget) then monsterTarget = monsterScreen[i] end end end end doMonsterSetTarget(cid, monsterTarget) return true end]]></event> <talkaction words="!autotarget;/autotarget" event="buffer"><![CDATA[ function onSay(cid, words, param) if param == "on" then setPlayerStorageValue(cid, 25471, "on") return doPlayerSendTextMessage(cid, 27, "Você ligou o sistema de auto target, configure ele para !autotarget distancia ou !autotarget forte .") elseif param == "off" then setPlayerStorageValue(cid, 25471, "off") return doPlayerSendTextMessage(cid, "27, Você desligou o sistema de auto target.") elseif param == "distancia" or param "forte" then if getPlayerStorageValue(cid, 25471) ~= "on" then return doPlayerSendTextMessage(cid, "27, Você precisa estar com o sistema de auto target ligado (!autotarget on)") end setPlayerStorageValue(cid, 25472, param) return doPlayerSendTextMessage(cid, "27, Você trocou o modo do auto target para " .. param .. ".") end end]]></talkaction> </mod>[/LUA] coloque o xml na pasta mods do ot. comandos:
- 8 respostas
-
- autotarget
- auto
- (e 4 mais)
-
Inanimate Object Bom venho trazer mais um script, sei que a idéia é meio boba, mais sei la, não tinha oque fazer, é o seguinte, vc pega uma pedra(configurado para o id: 8310) e dá use num objeto, espadas, armaduras, escudos, objetos de casa, qualquer o objeto que seje "moveable" ou seja objetos que vc pode arrastar, então o objetos tomara vida e sera seu summon, o atk e a vida dele, ira basear no seu level, quando o summon morre, o item volta ao normal aonde o summon morreu, é isso kkk, caso vc queira dar vida á algum objeto que não seja "moveable" tipo arvores, flores, etc, vc configura na tabela, e caso vc não quer que um item que é "moveable" ganhe vida, só configurar tbem, esta tudo comentado no script, para configurar do seu jeito, primeiramente vc deve criar o monstro. inanimate object.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Inanimate Object" nameDescription="a inanimate object" race="undead" experience="0" speed="250" manacost="0"> <health now="1" max="1"/> <look type="232" corpse="0"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> </attacks> <defenses armor="10" defense="20"/> </monster> tag: <monster name="Inanimate Object" file="inanimate object.xml"/> segundo passo crie outro xml, mais na pasta mod e cole o código: inanimateObject.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="inanimateObject" enabled="yes" author="Miiller" forum="XTibia.com"> <config name="inanimateObjectLib"><![CDATA[ InanimateCfg = { levelForUse = 1, -- level para usar premium = false, -- somente premium pz = false, -- pode dar vida a objetos em pz house = false, -- pode dar vida a objetos em casas maxSummon = 1, -- maximo de summons specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida blockItems = {}, -- items que são "movable" mas não podem ganhar vida restoreItem = true, -- depois que o summon morre, restaurar o item } function object_attack(cid, object) if not isCreature(cid) or not isCreature(object) then return true end if getCreatureTarget(cid) > 0 then if getDistanceBetween(getThingPos(getCreatureTarget(cid)), getThingPos(object)) == 1 then doTargetCombatHealth(object, getCreatureTarget(cid), COMBAT_PHYSICALDAMAGE, -(getPlayerLevel(cid)/4), -(getPlayerLevel(cid)/2), CONST_ME_BLOCKHIT) end end addEvent(object_attack, 2000, cid, object) end ]]></config> <action itemid="8310" event="script"><![CDATA[ domodlib("inanimateObjectLib") function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) < InanimateCfg.levelForUse then return doPlayerSendCancel(cid, "You need level " .. InanimateCfg.levelForUse .. " for give life to an object.") end if not isPremium(cid) and InanimateCfg.premium then return doPlayerSendCancel(cid, "You need premium for give life to an object.") end if not isItemMovable(item2.itemid) and not isInArray(InanimateCfg.specialItems, item2.itemid) or isCorpse(item2.uid) or isCreature(item2.uid) or isInArray(InanimateCfg.blockItems, item2.itemid) then return doPlayerSendCancel(cid, "This object can not gain life.") end if #getCreatureSummons(cid) >= InanimateCfg.maxSummon then return doPlayerSendCancel(cid, "You already have many summons.") end if getPlayerItemCount(cid, item2.itemid) > 0 then return doPlayerSendCancel(cid, "Please, place this object in ground.") end if getTileHouseInfo(topos) and not InanimateCfg.house then return doPlayerSendCancel(cid, "This object can not gain life in house.") end if getTilePzInfo(topos) and not InanimateCfg.house then return doPlayerSendCancel(cid, "This object can not gain life in protection zone.") end local obj = doCreateMonster("Inanimate Object", topos) doConvinceCreature(cid, obj) setCreatureMaxHealth(obj, getPlayerLevel(cid)*2) doCreatureAddHealth(obj, getPlayerLevel(cid)*2) doSetItemOutfit(obj, item2.itemid) doSendMagicEffect(getThingPos(obj), 30) if InanimateCfg.restoreItem then doCreatureSetStorage(obj, 3214, item2.itemid) doCreatureSetStorage(obj, 3215, item2.type == 0 and 1 or item2.type) registerCreatureEvent(obj, "restoreItemSummonObj") end doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, item2.type == 0 and 1 or item2.type) object_attack(cid, obj) return true end ]]></action> <creaturescript type="death" name="restoreItemSummonObj" event="script"><![CDATA[ function onDeath(cid, corpse, deathList) doCreateItem(getCreatureStorage(cid, 3214), getCreatureStorage(cid, 3215), getThingPos(cid)) doSendMagicEffect(getThingPos(cid), 30) return true end ]]></creaturescript> </mod> e acabou, as configurações esta no xml da pasta mod: InanimateCfg = { levelForUse = 1, -- level para usar premium = false, -- somente premium pz = false, -- pode dar vida a objetos em pz house = false, -- pode dar vida a objetos em casas maxSummon = 1, -- maximo de summons specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida blockItems = {}, -- items que são "movable" mas não podem ganhar vida restoreItem = true, -- depois que o summon morre, restaurar o item } configura do seu jeito kk só pegar o item 8310, e usar nos objetos, fico mto leegal kkkk fui
-
Fundamentos da aplicação Olá, eu sou Miiller conhecido aqui no xtibia como "xotservx", tenho 17 anos, e iniciei a minha faculdade este ano, estou cursando análise e desenvolvimento de sistemas , na faculdade estou começando aprender desenvolver aplicações em C#, e como sou fanático em scripts, resolvi criar uma aplicação que facilita-se algo na vida dos scripters, então eu desenvolvi essa aplicação para q ela crie o inicio do script, aonde você pode adicionar varias condições para que o script aconteça. Perai ! O aplicativo faz o script pra você ? Não ! Ele não faz o script totalmente para você, mas ajuda muito quado se quer colocar por exemplo, para que somente players level 20, usa tal script, foi pensando nisso que desenvolvi essa aplicação. Interface e exemplo de uso Esta é a interface da aplicação veja que tem varias configurações que pode ser adicionada no script, como level, magic level, skills, posição adequada, storages ( permite varias storages ), items e suas quantidades, entre outras, depois clicando no butão Create File, a seguinte mensagem irá aparecer : O aplicativo automáticamente cria o arquivo em lua, no mesmo diretório que estiver o executavel da aplicação, o script resultou o seguinte: -- Script Name: test V1.0 -- Autor: xotservx -- Using Script Check Generator (xotservx) function onSay(cid, words, param, channel) if getPlayerLevel(cid) < 20 then return doPlayerSendCancel(cid, 'You need level 20') end if getPlayerVocation(cid) ~= 3 then return doPlayerSendCancel(cid, 'His vocation to be ' .. getPlayerVocationName(3)) end if getPlayerItemCount(cid, 2160) < 10 then return doPlayerSendCancel(cid, 'You need 10 '.. getItemNameById(2160)) end -- Start your script return true end Tudo correto as verificações agora se pode iniciar o script. Downloads MEGA Mediafire Zippyshare Scan : VirusTotalScan Requisitos : .net framework 3.5 ou superior Bom, então é isso ai, quem gosto pelo menos da idéia, comenta ai, e se souberem de bugs e tals, ou de novas idéias podem me adiconar no msn avontade .
-
function create_random_area(sizex, sizey, typecenter) local area = {} for y = 1, sizey do tab = {} for x = 1, sizex do table.insert(tab, ((sizey - 1) / 2) + 1 == y and ((sizex - 1) / 2) + 1 == x and typecenter or math.random(0, 1) ) end table.insert(area, tab) end return area end cria uma area randomizada, para ele criar o centro vc precisa usar numeros impares no tamanho do x e y, pois não tem como achar o centro de uma area 2, 2 por exemplo . create_random_area(3, 5, 2) resultado: {0, 1, 1} {0, 1, 1} {0, 2, 1} {1, 1, 0} {0, 1, 0} até.
-
- createrandomarea
- area
- (e 6 mais)