Ir para conteúdo

knightmage

Campones
  • Total de itens

    2
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    knightmage deu reputação a 35383 em Criando Novos Items   
    Pessoal vamos começar sei que não sou um bom scripter
    mas vou tentar não chorar pelas criticas
     
    Com esse script você nao precisara editar nada somente adicionar os scripts.
     
    Vá na pasta do seu OT data/lib e criei um arquivo.lua e renomeie para
    Item.lua apague tudo dentro e cole isso:
     

    function doPlayerAddEditedItem(cid, itemid) local newxml = io.open("data/items/newitems.xml", "r") local configs = {} for i in newxml:read("*a"):gmatch("<item (.-)</item>") do local itemid = tonumber(i:match('id="(.-)"')) local itemconfig = { ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')), ["article"] = i:match('article.-=.-"(.-)"'), ["name"] = i:match('name.-=.-"(.-)"'), ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'), ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')), ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')), ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')), ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')), ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), } configs[itemid] = itemconfig end if configs[itemid] then local item = doPlayerAddItem(cid, configs[itemid].spriteid) for i,x in pairs(configs[itemid]) do doItemSetAttribute(item, i, x) end end end
     
    Pronto agora vá na pasta do ot/data/items e crie um arquivo xml
    e renomeie para novositems.xml apague tudo dentro e coloque isso:
     

    <?xml version="1.0" encoding="UTF-8"?> <items> <item id="100" spriteid="2400" article="a" name="magic edited sword"> <attribute key="description" value="Arma editada." /> <attribute key="defense" value="45" /> <attribute key="attack" value="100" /> <attribute key="extradef" value="10" /> <attribute key="extraatk" value="10" /> </item> <item id="101" spriteid="2472" article="a" name="master plate armor"> <attribute key="description" value="Armor editada." /> <attribute key="armor" value="19" /> </item> </items>
    Bom como vocês podem ver os arquivos XML ele guarda os items adicionais a ele
    ele funciona como o items.xml que tambem está na pasta
     
    os atributos são:
     

    ♦ "description" ♦ "defense" ♦ "attack" ♦ "extradefense" ♦ "armor" ♦ "extraattack"
     
     
     
    Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem...
     
    :aaskull: Até mais.... :aaskull:
  2. Upvote
    knightmage deu reputação a Jumper Sky em Hostiando Servidores Com Net Compartilhada [ Maneira Correta ]   
    Quem nunca se deparou com o bendito do problema da Internet Compartilhada, onde se incluem também probleminhas como Routers, Rubs e Switchs.
    Essas belezinhas impedem agente de hospedar servidores tanto de Tibia como de outros jogos online também.
    Uma das explicações mais simples para isso é o bendito do IP gerado pelo Router/Rub/Switch, eles criam o seu próprio IP impidindo assim nós, pobres mortais, de hospedar nossos tão aclamados Open Tibia Servers!
     
    Agora trago ao XTibia em primeiríssima mão como faze-lo sem problemas.
    É simples e bem eficaz. Serve para todos os tipos aparelhos de compartilhamento! (de A-Z).
     
    Conceito de IP
    Os endereços IP são quatro conjuntos de números separados por pontos que permitem os computadores identificarem uns aos outros.
    Cada computador tem pelo menos um endereço IP, e dois computadores nunca devem ter o mesmo endereço IP. Se eles fizerem isso, nenhum deles será capaz de se conectar à Internet.
     
    Conceito de IP Estático e Dinâmico
    A maioria dos roteadores atribuem endereços IP dinâmicos por omissão. Eles fazem isto porque o endereço IP dinâmico de redes não exigem nenhuma configuração. O utilizador pode simplesmente ligar seu computador e sua rede irá funcionar. Quando os endereços IP são atribuídos de forma dinâmica, o router é que atribui um deles. Cada vez que um computador reinicializa ele pede para o router um endereço IP. O roteador então gera um endereço IP que já não tenha sido entregue a outro computador. Isto é importante para a nota. Quando você configurar seu computador para um endereço IP estático, o router não sabe que um computador está usando esse endereço IP. Portanto, o mesmo endereço IP pode ser entregue a outro computador mais tarde, e que irá impedir os computadores de se conectarem à Internet. Assim, quando você atribuir um endereço IP estático, é importante atribuir um endereço IP que não será entregue a outros computadores através do endereço IP dinâmico servidor. O endereço IP dinâmico servidor é geralmente referido como o servidor DHCP.
     
    dica: atribua à ultima casa numérica numeros de 10 à 254(máximo).
     
    PRIMEIRO PASSO (Descobrir/Criar o seu IP Estático)
     
    - Configurar um IP estático para o Windows Vista.
     
    1.0 Abra o menu Iniciar e clique em Executar. Você deve ver agora a janela seguinte.
     

     
    2.0 Digite cmd na caixa de texto, e clique em OK.
     
    3.0 Os comandos podem aparecer de forma diferente na tela, mas isso realmente não interessa.
    Digite ipconfig /all na tela, em seguida, pressione a tecla Enter.
     

     
    Isto irá mostrar uma grande quantidade de informação.
     

     
    4.0 Eu quero que você anote algumas das informações contidas nesta janela.
    Estabelecendo o endereço IP, Máscara, Gateway Padrão, e nomes de servidores.
    Certifique-se de constatar qual é qual. Vamos utilizar esta informação um pouco mais tarde.
    Estamos apenas preocupados com entradas IPv4, você pode ignorar as IPv6.
     
    4.1 Digite quit nesta janela e, em seguida, pressione a tecla Enter para fechá-la.
     
    5.0 Mais uma vez, abra o menu Iniciar. Desta vez clique em Painel de controle.
     

     
    6.0 Dê Duplo clique em Centro de Rede e Compartilhamento.
     

     
    7.0 Dê Único clique em Gerenciar Conexões de Rede, no lado esquerdo da tela.
     

     
    8.0 Você pode ter várias ligações de rede nesta janela.
    Quero que dê um clique direito sobre o que você utiliza para se conectar à internet. Em seguida, clique em Propriedades.
     
    8.1 Se você não tiver certeza de qual seja, dê um clique direito nele e clique em Desativar. Em seguida abra uma página na web.
    Será que ela vai abrir? Se não for possível, então você encontrou a sua ligação à Internet.
    Feche a janela do navegador. Vá em frente e dê um clique direito na conexão de rede novamente e clique em Ativar.
    Mais uma vez, abra um novo navegador. Você deverá ver uma página web. Feche a janela do navegador. (Caso não visualize a página web volte ao passo 8.1).
    Clique direito sobre a conexão de rede e clique em Propriedades na parte inferior.
     

     
    9.0 Agora você deve ter exposto essa janela na sua tela.
    Clique no botão Propriedades para abrir a janela de propriedades desta ligação à Internet.
     

     
    10.0 Selecione Protocolo TCP/IP Versão 4 (TCP/IPv4) e, em seguida, no botão Propriedades.
    Você verá a seguinte tela.
     

     
    11.0 Antes de fazer quaisquer alterações, anote as configurações que você vê nesta página.
    Se algo der errado você pode alterar as configurações de volta para a que antes estavam!
    Você deverá ver um ponto no Obter um Endereço IP Automaticamente na caixa.
    Se não estiver marcado, sua conexão já está configurada para um IP estático. Basta fechar todas as janelas e está feito.
     
    11.1 Escolha um endereço IP e inseria-o na caixa Endereço IP. O endereço IP que você escolher deverá ser muito semelhante ao do endereço IP do roteador. Apenas os últimos números do endereço IP devem ser diferentes. Se o endereço IP do roteador é 192.168.0.1, eu posso escolher 192.168.0.10. O endereço IP que você escolhe deve terminar com um número entre 1 e 254, e não deve ser o mesmo que o endereço IP do roteador. Cada dispositivo que conecta a sua rede precisa de ter seu próprio endereço IP.
     
    11.2 Coloque a máscara na caixa Máscara de Sub-Rede, que já havia sido identificada no passo 4.0.
    O gateway padrão deve ir para a caixa Gateway Padrão, também identificado no passo 4.0.
    Digite os servidores de DNS encontrado na caixa Servidor DNS Preferencial/Alternativo.
     
    11.3 Clique em OK, automaticamente saindo deste menu.
     
    Se você não conseguir abrir páginas web ou se conectar a internet, é mais provável que o problema esteja nas DNS digitadas.
    Você pode repara-las com seu ISP, entrando em contato com sua operadora Banda Larga. Eles serão capazes de dizer o que você deve usar imediatamente.
     
    É isso que deve ser feito!
    Se você não pode se conectar à internet, mude a configuração de volta ao que era originalmente.
     
     
    SEGUNDO PASSO (Configurando as Portas)
     
    No meu caso, tenho um D-LINK (DIR-100).
    Todos os modelos e fabricantes seguem o mesmo sistema, mais os passos podem variar um pouco, mais nada fora do comum.
    Caso tenha dificuldades em se localizar nos procedimentos a seguir, utilize o manual do fabricante juntamente com esse tutorial.
     

     
    1.0 Abra um navegador da web como o Internet Explorer ou Google Chrome.
    Digite o endereço IP do seu router na barra de endereços do seu navegador.
    Por padrão o endereço IP deve ser definido como 192.168.0.1.
     

     
    2.0 Você deverá ver uma caixa perguntar-lhe por seu nome de usuário e senha.
    Digite seu nome de usuário e senha agora. Por padrão o usuário é admin, e a senha é em branco.
    Clique no botão OK para efetuar login no seu router.
     

     
    3.0 Clique no link Advanced perto do topo da página.
     

     
    4.0 Vamos listar aqui uma série de linhas que irá mostrar-lhe exactamente como encaminhar as portas que você precisa para avançar.
    Open Tibia Server requer que você transmita a 7171 e 8000.
    Vá em frente e introduza as definições acima como demonstrado na Port Forwarding Rules menu(imagem).
    Em IP Adress introduza o seu IP Estático, adiquirido no PRIMEIRO PASSO.
     
    5.0 Quando terminar, clique em Save Sttings na parte superior da tela para salvar suas alterações.
     
    Pronto, as portas estão desbloqueadas e devidamente configuradas.
     
     
    TERCEIRO PASSO (Liberando no Firewall a Porta 7171 e configurando o arquivo config.lua)
     
    1.0 Desbloqueie a Porta 7171 no Firewall do Windows.
     
    2.0 Acesse o arquivo config.lua na pasta de seu servidor e modifique o IP, substituindo pelo IP Dinâmico, que você pode identifica-lo Aqui .
     
    Pronto, agora é só esbanjar de seu servidor 100% hospedado em Internet Compartilhada.
     
    - Caso alguem queira conferir um server em Net Compartilhada segue o meu:
     
    theopera.servegame.com (8.50).
     
    =======
    CREDITOS
    @Januska
    =======
     
    Quatro horas foi o tempo que levei para reunir informações, organiza-las, transcreve-las e confeccionar as Screens,
    então peço sinceramente para não retirarem o Tutorial do seu lugar de Origem e muito menos retirar os créditos.
    Caso haja nescessidade de divulga-lo em outros forums, favor colocar os devidos créditos.
    Obrigado!
     
    Duvidas: Em relação as dúvidas, favor tirar no tópico! não estou mais atendendo via e-mail. Obrigado!
     
    Cya (Y).
     
    Edit Cause: Correção do nome do Tópico; Erros Ortográficos; Cores e Fontes.
  3. Upvote
    knightmage deu reputação a riqueemapper em Garganta Do Diabo   
    Dragon Sland by Riquemaper'

     
     
    Bom Gente venho divulgar mais um de meus trabalhos. Fiz uma ilha de dragons, num estilo Jungle.Há todo os tipos de dragons e algumas outras criaturas num spawn diferenciado e interessante, é uma ilha explorável e não há muito perigo para high leveis.
     
    Abaixo algumas imagens:

     



     



     



     

    Quaisquer defeitos, por favor, me avisem para buscar sempre melhorar!


     
    Bom pra quem gostou está ai o Link para Download:
    Clique aqui
     
    Ainda não sei como funciona este sistema de scan, mas afirmo de que está livre de vírus.
     
    É isso ai, em breve estarei divulgando mais criações minhas.
    QUEM GOSTOU DA +REP!
    Obrigado! :smile_positivo:
  4. Upvote
    knightmage deu reputação a soldoran em [Weapon]Nova Wand Estilo Inovador[Com Imagens]   
    Fala pessoal do xtibia blz?
     
     
    vim trazer aqui um novo tipo de wand,não naão é aquelas de sempre,que so tem ataque de holy,ou de death,como sempre,e que o cara pode tirar "horrores",nela temos um conceito novos.
     
     
    -Danos de todos elementos,inclusive fisico
    -Danos são aleatorios
    -você escolhe quanto ela pode bater
     
    faça um arquivo na pasta weapons/scripts com nome de Wand.lua
     
    e cole isso la dentro
     
     
    quando for escolher o item que sera a wand nao esqueça de colocar isso
     
     
     
     
    depois cole essa Tag em weapon.xml
     
     
     
    Explicação
     
    min, max = 300, 300 -- dano minimo e maximo ja diz tudo
    "xxx" aqui é a ID do Item que sera a Wand
     
     
    Vai a imagen pra vocês de alguns dos danos que ela da
     
     
     
     
     
    Espero que gostem e que tenhao um bom proveito desse script
    que é exclusivo do meu ot :]
     
     
    SE COLOCAR EM OUTRO TOPICO OU OUTRO FORUM FAVOR COLOCAR OS DEVIDOS CREDITOS
     
     
    Creditos:Ao meu amigo Miller por ter feito ele para meu ot
    Creditos:a min por ter compartilhado com vocês
     
     
     
    Se gostou?de REP+
  5. Upvote
    knightmage deu reputação a allan1001 em Empilhar Itens Automaticamente Na Bp.   
    Testado no TFS 0.4 e 0.3.6pl1
     
    Para arruma o AutoStatacking é preciso mexer nas sources do server.
     
    Ache as fuções e modifique.
     
    Em container.cpp
     

    Cylinder* Container::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t&) { if(index == 254 /*move up*/) { index = INDEX_WHEREEVER; *destItem = NULL; Container* parentContainer = dynamic_cast<Container*>(getParent()); if(parentContainer) return parentContainer; return this; } else if(index == 255 /*add wherever*/){ index = INDEX_WHEREEVER; *destItem = NULL; } else if(index >= (int32_t)capacity()){ /* if you have a container, maximize it to show all 20 slots then you open a bag that is inside the container you will have a bag with 8 slots and a "grey" area where the other 12 slots where from the container if you drop the item on that grey area the client calculates the slot position as if the bag has 20 slots */ index = INDEX_WHEREEVER; *destItem = NULL; } const Item* item = thing->getItem(); if(item == NULL){ return this; } if(item->isStackable()){ if(item->getParent() != this){ //try find a suitable item to stack with uint32_t n = 0; for(ItemList::iterator cit = itemlist.begin(); cit != itemlist.end(); ++cit){ if((*cit) != item && (*cit)->getID() == item->getID() && (*cit)->getItemCount() < 100){ *destItem = (*cit); index = n; return this; } ++n; } } } if(index != INDEX_WHEREEVER){ Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(*destItem); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } } return this; }
     
    Em item.cpp
     

    void Item::setDefaultSubtype() { setItemCount(1); const ItemType& it = items[id]; if(it.charges) setCharges(it.charges); }
     
    Em player.cpp
     

    Cylinder* Player::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t& flags) { if(index == 0 /*drop to capacity window*/ || index == INDEX_WHEREEVER){ *destItem = NULL; const Item* item = thing->getItem(); if(item == NULL){ return this; } //find an appropiate slot std::list<Container*> containerList; for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* inventoryItem = inventory[i]; if(inventoryItem == tradeItem){ continue; } if(inventoryItem == tradeItem){ continue; } if(inventoryItem){ //try find an already existing item to stack with if(inventoryItem != item && item->isStackable() && inventoryItem->getID() == item->getID() && inventoryItem->getItemCount() < 100){ *destItem = inventoryItem; index = i; return this; } //check sub-containers else if(Container* subContainer = inventoryItem->getContainer()){ Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } containerList.push_back(subContainer); } } //empty slot else if(__queryAdd(i, item, item->getItemCount(), flags) == RET_NOERROR){ index = i; *destItem = NULL; return this; } } //check deeper in the containers for(std::list<Container*>::iterator it = containerList.begin(); it != containerList.end(); ++it){ for(ContainerIterator iit = (*it)->begin(); iit != (*it)->end(); ++iit){ if(Container* subContainer = (*iit)->getContainer()){ if(subContainer == tradeItem){ continue; } Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } } } } return this; } Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(destThing); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } else return this; }
     
    Créditos: Exedion e kwovan
  6. Upvote
    knightmage deu reputação a Vodkart em Perfect Vip System 3.0   
    Perfect Vip system 3.0
     
    Última atualização: 14/08/12
     
     
    Versão Testada:TFS 0.3.6 - 8.54 - 8.6 - 9.6
    Créditos pelas modificações: Kydrai,Vodkart e Marcryzius
     
     
    Oque Contém no Sistema vip 3.0?
     
     
     
    Comandos:
     
     
     
     
     
    Query
     
    Primeiro passado execute essa query na sua DB:
     

    ALTER TABLE `players` ADD `vipacess` INT(15) NOT NULL DEFAULT 0;
     
     
    Agora vá em Data/lib/050-function e adicione essas funções:
     

    function getCharacterAcess(cid) local query = db.getResult("SELECT `vipacess` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) if query:getID() ~= -1 then return query:getDataInt("vipacess") end end function getCharacterDays(cid) local acess = math.ceil((getCharacterAcess(cid) - os.time())/(86400)) return acess <= 0 and 0 or acess end function HaveCharaterAcess(cid) return getCharacterDays(cid) > 0 and true or false end function setAcessTime(cid, time) return db.executeQuery("UPDATE `players` SET `vipacess` = "..time.." WHERE `id` = "..getPlayerGUID(cid)) end function addCharacterAcess(cid, days) local add = (days <= 0 and 1 or days)*86400 local time = getCharacterDays(cid) == 0 and (os.time() + add) or (getCharacterAcess(cid) + add) return setAcessTime(cid, time) end function doRemoveCharacterAcess(cid, days) local remove = days*86400 local time = getCharacterAcess(cid) - remove return setAcessTime(cid, (time <= 0 and 1 or time)) end function getVipAcessDate(cid) if HaveCharaterAcess(cid) then return os.date("%d/%m/%y %X", getCharacterAcess(cid)) end return false end
     
     
     
     
    Talkactions
     
    agora em talkactions/scripts
     
     
    vipsystemplayer.lua

    function onSay(cid, words, param) if(words == "!buyvip") then local days = 10 local price = 50000 if not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.") addCharacterAcess(cid, days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) elseif(words == "!vipdays") then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP. "..(getCharacterDays(cid) > 0 and "ela acaba em "..getVipAcessDate(cid).."." or "")) end return true end
     
    vipsystemgod.lua

    function onSay(cid, words, param) if(words == "/checkvip") then if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local player = getPlayerByName(param) if not isPlayer(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.") return true end return doPlayerPopupFYI(cid, "O jogador tem "..getCharacterDays(player).." dias de VIP no character.") elseif(words == "/addvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end addCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você adicionou "..tonumber(t[2]).." dias de VIP no player "..getCreatureName(player)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..tonumber(t[2]).." dias de VIP no seu character.") elseif(words == "/delvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end doRemoveCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você removeu "..tonumber(t[2]).." dias de VIP do jogador "..getCreatureName(player)..".") end return true end
     
     
    em talkactions.xml adicione as tags:
     

    <talkaction words="!buyvip;!vipdays" event="script" value="vipsystemplayer.lua"/> <talkaction words="/addvip;/delvip;/checkvip" access="4" event="script" value="vipsystemgod.lua"/>
     
     
    Item Vip
     
    item que adiciona vip no character
     
    actions/script
     
    addvipdays.lua

    function onUse(cid, item, fromPosition, itemEx, toPosition) local days = 15 addCharacterAcess(cid, (days <= 0 and 1 or days)) doRemoveItem(item.uid,1) return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) end
     
    Actions.xml

    <action itemid="ID DO SEU ITEM" script="addvipdays.lua"/>
     
     
    Vip Door
     
    actions/script
     
    perfectvipdoor.lua

    function onUse(cid, item, frompos, item2, topos) if not HaveCharaterAcess(cid) then return doPlayerSendTextMessage(cid,22,"Você precisa ser vip para passar aqui.") end doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, topos, true) return true end
     
    actions.xml

    <action actionid="7779" script="perfectvipdoor.lua"/>
     
     
     
    Tile VIP
     
     
    em movements/scripts crie um arquivo.lua e renomeie para
     
     
    vipe.lua

    function onStepIn(cid, item, position, fromPosition) if item.actionid == 13700 and not HaveCharaterAcess(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você não é vip.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"bem vindo.") return true end
     
     
    Em movements.xml adicione a tag:
     

    <movevent type="StepIn" actionid="13700" event="script" value="vipe.lua"/>
     
     
     
    no seu piso coloque ACTIONID 13700
     
     
     
    Fim Vip
     
    em creaturescript/script
     
     
    endvip.lua

    function onLogin(cid) if getCharacterDays(cid) > 0 then setPlayerStorageValue(cid, 9898, 1) elseif getPlayerStorageValue(cid, 9898) == 1 and getCharacterDays(cid) <= 0 then doPlayerSetTown(cid, 1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerPopupFYI(cid, "Sua vip Account acabou.") setPlayerStorageValue(cid, 9898, -1) end return true end
     
    em creaturescript.xml adicione a tag:
     

    <event type="login" name="CheckVip" script="endvip.lua"/>
  7. Upvote
    knightmage deu reputação a Vmspk em Azeroth Server Updated   
    Azeroth Server



    Updated 14/07/2011: v1.0


     



     
     
     
     
     
    Outras Versões:
     
    v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/
    v2.0 [9.60]: http://www.xtibia.com/forum/topic/205054-960-azeroth-rpg/
     
     
    Versão: 8.70
    Distro: Crystal Server
    Mapa Base: Yourots Edited e Mix Yourots
     
     
     
     
     

    Features:


     
     
     
     
    > 7 Cidades:
     
    Azeroth
    Avalon
    Zatur
    Liberty Bay
    Gloria
    Sand Trap
    Tiquanda
     
    > Montarias por quest(NPC Mount Master, cavernas ao norte de Azeroth).
    > NPCs de Travel/Boat diferentes para cada cidade.
    > Corrigidos Vários Bugs do mapa.
    > Templo Reformado
    > Retirados Vários Itens custom e suas quests do antigo Riot Server.
    > Adicionada Dragon Dungeon.
    > Adicionado Vulcão de Goroma.
    > Adicionada Quest Especial em Gloria (NPC Gloria Scientist).
    > Adicionada Ferumbras Tower.
    > Várias Hunts adicionadas.
    > Adicionada Formorgar Mines.
    > Sistema de Refinamento e Slot.
    > 6 Novas Mounts.
     
    > Principais Quests:
     
    Annihilator
    Pits of Inferno
    The Inquisition
    FireWalker Boots
    Demon Helmet
    Draken
    Hell Conquer
     
    > 23 Raids Automáticas e configuradas:
     
     
     
     
    > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth]
     
    Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo.
     
    O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora.
     
     
     
     
     
     
     

    Imagens:


     



     



     



     



     



     



     



     



     



     



     



     



     



     



     



     



     



     



     
     

    Raids


     
     
     
     

    Castle


     
     
     
     
     

    Upgrade & Slot System


     
     
     
     
     
     
    Não há teleports diretos para hunts ou quests.
    Não há items ou monstros editados(além dos trainers).
    Não há sistema VIP(premium account valorizada).
    Não há raids com monstros excessivamente fortes nas cidades iniciais.
     
     
     
    Acc God: 2/password
     
    Créditos:Unknow YourOts Edited, Mix Yourots Team, Crystal Server Team, Tryller, Mock, TFS Team e um pouquinho (bem pouquinho) pra mim xD.
     
     
     


    Source - IP Changer 8.70 - Utilitários(opcional) - Map Editor

     

    *Utilitários inclui: Lista com códigos de todos os looktypes, SQLite Studio 1.1.1, códigos das cores dos outfits e o OTRestarter.


     
     


    Download Azeroth Server V 1.0 - Completo [MEDIAFIRE]

     
     

    Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém.


     



    V 0.2

     

     

     

    V 0.3

     


     

     

    V 0.4

     


     

     

    V 1.0

     




     
    Último pedido meu: encham o saco dos adms pra colocarem o tópico do tryller como fixo. É o melhor distro 8.70 que nós temos aqui, talvez ele salve os ots 8.70 daqui pra frente
     
     
    Contato: vmspk@hotmail.com
     
     
    Edit - Coloquei os Scans
    Edit2 - Adicionado comando
    Edit3 - Atualização
    Edit4 - Atualização
     

    http://img208.images...claymorepsf.jpg

  8. Upvote
    knightmage deu reputação a Ilidian em Ajuda Ae Item.xml   
    O problema é nessa parte aqui:

    <item id="11371" article="a" name="dead lancer beetle"> <attribute key="containerSize" value="10" /> <attribute key="decayTo" value="11372" <attribute key="duration" value="300" /> <attribute key="corpseType" value="blood" /> <attribute key="fluidSource" value="blood" /> </item>
     
    É oque eu falei ali em cima, toda "tag" de atributo precisa ter um começo e um fim.
    Nessa parte aqui:
    <attribute key="decayTo" value="11372" <attribute key="duration" value="300" />
     
    Aquele primeiro atributo não tem fim:
    <attribute key="decayTo" value="11372"
     
    Tudo que você precisa fazer é terminar a tag colocando o />, exemplo:
    <attribute key="decayTo" value="11372" /> <attribute key="duration" value="300" />
    items.xml
  9. Upvote
    knightmage deu reputação a thalia em [8.54]Pokeserver Tfs 0.3.6 [V3.0]   
    Oi galera do xtibia, alguns já me conhece , posto scripts na seção de actions/talk/move!

    Aqui está a versão 3.0 do PokeServer TFS 0.3.6pl1,

    ~~( O que contém na versão 3.0? ) ~~

    ~~>Fly System - Bug corrigido
    ~~>Ride System- Bug corrigido
    ~~>Catch System- Bug corrigido
    ~~>Go/back System- Bug corrigido
    ~~>Stones System - Bug corrigido
    ~~>Npc Heal - Bug arrumano
    ~~>Todos os 151 pokemons (50% configurados)
    ~~>Skill System - Para cada tipo de pokemon é um poder difirente!
    ~~>Mapa Svke 70%
    ~~>Todas as outfits

    Stones,Go/back,Npc,Fly,Ride,Skill, foram testados, então não venha encher o saco falando merda


    <--! Download !-->
    Server 3.0
    Client (È extremamento necessario para poder entrar no server!)

    Versão 3.0 do server de pokemon

    Faça você mesmo!




    Créditos ao Drakylucas por me ajuda a fazer os scripts!

    Não se esqueça de clicar ali no icone verde
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...