-
Total de itens
311 -
Registro em
-
Última visita
-
Dias Ganhos
8
Tudo que meubk postou
-
o script está configurado para funcionar em qualquer item que vc pode mover pra la e praca , tipo os items que usa dentro de casas, os equipamentos, armas, nessa tabela vc vai adicionar os items que vc quer q possa ganhar vida mais que não são moveable, tipo uma arvore, vc não pode arrastar ela, mais se vc colocar o id dela nessa tabela ela ira poder ganhar vida
-
seria legal um sistema aonde vc poderia montar a estrutura de sua própria guild, o mapa tenha varios lugares vazios, vc vai compra os materias, como tile, walls, doors, e vai montando sua guild, ia ser top !
- 94 respostas
-
- fairy tail online
- fairy tail
- (e 2 mais)
-
cara vc ta de paarabéns, melhor mapper que eu ja vi, sem sombra de duvidas !!
-
ta de parabéns, irei usar no meu server para a raça elf com certeza !!
-
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
-
function onSay(cid, words, param) return tonumber(param) and (function () for _, player in pairs(getPlayerOnlines()) do vip.addVipByAccount(player, vip.getDays(param)) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "You have received " .. param .. " VIP days.") end return true end)() or doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "invalid param.") end /addvip dias
-
if exhaustion.get(cid, 8554) and exhaustion.get(cid, 8554) > 0 then WHAT ?
-
[CreatureEvent] onTalk(cid, type, text, position)
um tópico no fórum postou meubk Linguagens de Programação
onTalk(cid, type, text, position) Estava de boa no meu serviço, sem nada pra fazer, então resolvi criar essa função ai, não sei se vai ter utilidade para alguém, mais ta ae, ela retorna tudo aquilo que foi dito pela criatura, o tipo, e a posição. Vamos as códigos: em creatureevent.h : depois de: CREATURE_EVENT_DIRECTION, adicione: CREATURE_EVENT_TALK, -- depois de: uint32_t executeDirection(Creature* creature, Direction old, Direction current); adicione: uint32_t executeTalk(Creature* creature, MessageClasses type, const std::string& text, const Position& position); em creatureevent.cpp : depois de: else if(type == "direction") _type = CREATURE_EVENT_DIRECTION; adicione: else if(type == "talk") _type = CREATURE_EVENT_TALK; -- depois de: case CREATURE_EVENT_DIRECTION: return "onDirection"; adicione: case CREATURE_EVENT_TALK: return "onTalk"; -- depois de: case CREATURE_EVENT_DIRECTION: adicione: case CREATURE_EVENT_TALK: return "cid, type, text, position"; -- procure pela função : uint32_t CreatureEvent::executeDirection(Creature* creature, Direction old, Direction current) depois que a função terminar adicione esta função: uint32_t CreatureEvent::executeTalk(Creature* creature, MessageClasses type, const std::string& text, const Position& position) { //onTalk(cid, type, text, pos) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local type = " << (uint32_t)type << std::endl; scriptstream << "local text = " << text << std::endl; env->streamPosition(scriptstream, "position", position, 0); if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", creature->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, (uint32_t)type); lua_pushstring(L, text.c_str()); LuaInterface::pushPosition(L, position, 0); bool result = m_interface->callFunction(4); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeTalk] Call stack overflow." << std::endl; return 0; } } em game.cpp : procure a função: bool Game::internalCreatureSay(Creature* creature, MessageClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/, uint32_t statementId/* = 0*/) e depois de: Player* player = creature->getPlayer(); if(player && player->isAccountManager() && !ghostMode) { player->manageAccount(text); return true; } adicione isto: bool deny = false; CreatureEventList talkEvents = creature->getCreatureEvents(CREATURE_EVENT_TALK); for(CreatureEventList::iterator it = talkEvents.begin(); it != talkEvents.end(); ++it) { if(!(*it)->executeTalk(creature, type, text, creature->getPosition())) deny = true; } if(deny) return false; e pronto ja vai estar funcionando ! uma das utilidades dessa função é não permitir divulgação de outros server, mais pra qm tem criatividade da pra fazer mtas outras coisas, o exemplo de divulgação: local linkProibidos = {"no-ip.com", "servergame.com", "sytes.net"} function onTalk(cid, type, text, position) for _, link in pairs(linkProibidos) do if text:find(link) then return false end end return true end a tag pro xml fica: <event type="talk" name="AntiDivulga" event="script" value="antidivulga.lua"/> bom, não sei se alguém ja fez essa função mais eu sei q essa é 100% de minha autoria, e eu não permito que ela seja postada em outro forum a não ser o xtibia ! eu testei em um tfs 0.4 obrigado a todos, xotservx (miillerdomingues) bj -
pinpão é o programador ? kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk, coitado do seu server |:
-
D H B
-
vlwwww *-*
-
vou fazer, add skype: xotservx.miiller, e sim vc vai precisar da função do Oneshot
-
Como fazer o pleyer retornar a primeira transformação ao morrer?
tópico respondeu ao richardvips de meubk em Lixeira Pública
posta o script q transforma o player -
Exp hit v4.0
- 4 respostas
-
- erro script exp hit!
- resolvido
- (e 1 mais)
-
troca essa linha: if getPlayerSlotItem(attacker, 9).itemid == 148 then por if getPlayerSlotItem(sid, 9).itemid == 148 then -- pq n usa a versão mais nova do script ?
- 4 respostas
-
- erro script exp hit!
- resolvido
- (e 1 mais)
-
quando vc usar a função em vez de vc por o maglevel coloca a skill : Damage(cid, getPlayerLevel(cid), getPlayerSkillLevel(cid, SKILL_FISHING)) e eu não sei pq a função tem o parametro cid, e não usa vc pode tirar ele: function Damage(level, maglevel) return (11+level*0.2+maglevel*2)*-1,(12+level*0.3+maglevel*2)*-1 end
-
me add skype: xotservx.miiller ou face: facebook.com/miillerdomingues
-
Proporções do mapa: Cara não sei bem, tendo algumas casas, dp, templo que seria aonde o rei da cidade ficaria (o elf mais forte), umas duas tres lojas, esta de bom tamanho. Prazo para término: quando vc puder Versão obrigatória: 9.46 Tipo de itens: \/ Estilo do mapa: As Construções seria algumas cima de arvores outras não, tudo em cima de arvores, bastante natureza, cogumelos, algo bem elf mesmo ! Umas imagens para base:
-
vllw :3
-
preciso
-
- o meu forte sempre foi as spells, faço as spells bem diferentes, se vc pesquisar meus historico de spells no xtibia, vai ver isso ai vai mais duas q vou usar no meu server, current shock fire shoot, evil spirit q eu postei e estarei reaproveitando no meu server :
-
o id que foi armazenado no addEvent quando ele é executado ja não é mais o mesmo uid, pq os uid de items é trocado constantemente, por isso vc deve verificar o item denovo na posição, não pegar o uid q foi armazeado na variavel: function onThink(interval, lastExecution, thinkInterval) local cfg = { pos = {x = x, y = y, z = z}, topos = {x = x, y = y, z = z}, tempo = x, } if getTileItemById(cfg.pos, 1387).uid < 1 then doCreateTeleport(1387, cfg.topos, cfg.pos) addEvent(function() doRemoveItem(getTileItemById(cfg.pos, 1387).uid, 1) end, cfg.tempo*1000) end return true end
-
dúvida Duvida funçao de pegar a descriçao do item
pergunta respondeu ao roriscrave de meubk em Scripts
em vez de vc tirar os dos pontos do inicio q não tem utilidade vc mi coloca " " ...
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.