Ir para conteúdo

PoRaI

Administrador
  • Total de itens

    121
  • Registro em

  • Última visita

  • Dias Ganhos

    18

Posts postados por PoRaI

  1. 13 minutos atrás, Marshmello disse:

    Sera que nessa alavanca daria pra verificar se os 5 tem um x pokemon?

    Foi mal, aweiuhaweu, não apareceu a notificação e não vi a mensagem, x.x. Não tinha dado F5, alkçaçlka.

    Especifica melhor isso ai, dá. Quer verificar se um dos 5 tem 1 pokémon em especifico? ou que os 5 estejam com 1 pokemon em especifico? Na bag ou sumonado? Se for na bag, depende da sua base. Eu não manjo muito da estrutura das bases de Pokémon, eu teria que ler um script pra entender, tipo o script da nurse joy. Se for sumonado é mais simples.

     

    7 minutos atrás, batuax disse:

    1 so clika eu tenho uma script aqui mais não ta pegando vou postar pera , ela fala que falta 4 players mais nunca teleporta 

     

     

     

    local playerA={

    {x=292, y=1042, z=9}, -- Lugar onde o primeiro player vai estar

    {x=291, y=1042, z=9}, -- Lugar onde o segundo player vai estar

    {x=290, y=1042, z=9}, -- Lugar onde o terceiro player vai estar

    {x=289, y=1042, z=9}, -- Lugar onde o quarto player vai estar

    }

    local playerB={

    {x=344, y=1026, z=9}, -- Lugar onde o primeiro player vai aparecer

    {x=305, y=1069, z=9}, -- Lugar onde o segundo player vai aparecer

    {x=245, y=1107, z=9}, -- Lugar onde o terceiro player vai aparecer

    {x=309, y=1125, z=9}, -- Lugar onde o quarto player vai aparecer

    }

     

    function onUse(cid, item, fromPosition, itemEx, toPosition)


    local t = {}

    if item.itemid ==1945 then

    for i =1, 4 do

    t=getTopCreature(playerA).uid

    if t ==0 or not isPlayer(t) then

    return doPlayerSendCancel(cid, 'You need 4 players for this quest.')

    elseif getPlayerLevel(t) < 300 then -- Level

    return doPlayerSendCancel(cid, 'All players need to have level 300 or higher.')

    end

    end

    for i=1, 4 do

    doTeleportThing(t, playerB)

    doSendMagicEffect(playerA, CONST_ME_POFF)

    doSendMagicEffect(playerB, CONST_ME_ENERGYAREA)


    end

    return doTransformItem(item.uid, item.itemid ==1945 and 1946 or 1945)

    end
    return true
    end

    troca pra isso: (ps: só vai rodar se o item que você tiver usando for o itemid 1945)

    local playerA= {
    	{x=292, y=1042, z=9}, -- Lugar onde o primeiro player vai estar
    	{x=291, y=1042, z=9}, -- Lugar onde o segundo player vai estar
    	{x=290, y=1042, z=9}, -- Lugar onde o terceiro player vai estar
    	{x=289, y=1042, z=9}, -- Lugar onde o quarto player vai estar
    }
    
    local playerB={
    	{x=344, y=1026, z=9}, -- Lugar onde o primeiro player vai aparecer
    	{x=305, y=1069, z=9}, -- Lugar onde o segundo player vai aparecer
    	{x=245, y=1107, z=9}, -- Lugar onde o terceiro player vai aparecer
    	{x=309, y=1125, z=9}, -- Lugar onde o quarto player vai aparecer
    }
    
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    	local players = {}
    	if item.itemid == 1945 then
    		for _, pos in pairs(playerA) do
    			local player = getTopCreature(pos).uid
    			if not isPlayer(player) then
    				return doPlayerSendCancel(cid, 'You need 4 players for this quest.')
    			elseif getPlayerLevel(player) < 300 then -- Level
    				return doPlayerSendCancel(cid, 'All players need to have level 300 or higher.')
    			end
    			table.insert(players, player)
    		end
    		for id, pos in pairs(playerB) do
    			doTeleportThing(players[id], pos, false)
    			doSendMagicEffect(pos, CONST_ME_POFF)
    			doSendMagicEffect(pos, CONST_ME_ENERGYAREA)
    		end
    		return doTransformItem(item.uid, item.itemid ==1945 and 1946 or 1945)
    	end
    	return true
    end

     

  2.  

    local to_pos = {x=1,y=1,z=7} -- POSIÇÃO PARA ONDE VAI SER TELEPORTADO
    local tile_pos = { -- POSIÇÕES DE ONDE VAI SER TELEPORTADO
    	{x=1,y=1,z=7},
    	{x=1,y=1,z=7},
    	{x=1,y=1,z=7},
    	{x=1,y=1,z=7},
    	{x=1,y=1,z=7},
    }
    
    function onUse(cid)
    	for _, pos in pairs(tile_pos) do
    		pos.stackpos = 255
    		thing = getThingfromPos(pos)
    		if isPlayer(thing.uid) then
    			doTeleportThing(thing.uid, to_pos, false)
    		end
    	end
    	return true
    end

     

  3. int LuaScriptInterface::luaDoCastSpell(lua_State* L)
    {
        //creature: doCastSpell("spellName")
        Creature* creature = getUserdata<Creature>(L, 1);
        if(!creature) {
            lua_pushboolean(L, false);
            return 1;
        }
     
        std::string& spellName = getString(L, 2);
        InstantSpell* spell = g_spells->getInstantSpellByName(spellName);
        if(!spell) {
            lua_pushboolean(L, false);
            return 1;
        }
    
        if(Monster* monster = creature->getMonster()) {
            Creature* target = monster->getAttackedCreature();
            if(target)
                spell->castSpell(monster, target);
            else
                spell->castSpell(monster);
     
        	lua_pushboolean(L, true);   
            return 1;
        } else if(Player* player = creature->getPlayer()) {
            if(spell->playerSpellCheck(player) && spell->playerCastInstant(player, spellName)) {
        	    lua_pushboolean(L, true);    
                return 1;
            }
        }
        lua_pushboolean(L, false);   
        return 1;
    }

    testa ae

  4. 1 hora atrás, epaminombas disse:

    eu coloquei o codigo acima e deu o mesmo erro:

     

    \luascript.cpp(9967): error C2664: 'bool InstantSpell::playerCastInstant(Player *,std::string &)': não é possível converter um argumento 2 de 'const char [1]' em 'std::string &'

    luascript.cpp(9967): error C2664: 'bool InstantSpell::playerCastInstant(Player *,std::string &)': não é possível converter um argumento 2 de 'const std::string' em 'std::string &'
    \luascript.cpp(9967): note: Conversão perde qualificadores

    editei dnv, testa aí. 

  5. Agora, epaminombas disse:

    Que bacana, é possível também ajustar a posição dos effects quando saem ?

    Com esse código, não, kk. Também não recomendaria fazer isso, pois já existe o offset no dat editor justamente pra isso. :X

  6. 3 minutos atrás, Walox disse:

    Sim eu utilizei o que você postou porem não tive sucesso com ele também então resolvi por igual os daths e sprs estão com Patchs

    Você pode me enviar o seu Things.lua pelo hastebin só pra mim dar uma olhada e comparar

    meu things.lua é diferente do seu. Btw, não dá nenhum erro quando você abre o terminal do cliente? Você sabe que a outfit tem que ser igual o número do .dat, né? E não o do /newtype.
    image.png

  7. 3 minutos atrás, Walox disse:

    Sinceramente eu não sei oque eu estou fazendo de errado novamente continua sem acontecer nada fiz como você avia dito para por opacidade mas sem sucesso Screenshot_1.thumb.png.2fe6636626722252be757e548896e82e.pngScreenshot_2.thumb.png.69202e3921b9afc6b9233c830d774f4b.pngScreenshot_3.thumb.png.fb470d4863af208da93e681d6ee0cd4a.png

    Cara, copia o código do loadOtml que eu postei no comentário, que é:

    if not g_things.loadOtml("/data/things/things") then
        errorMessage = errorMessage .. tr("Unable to load otml file, please place a valid otml in /data/things/things")
    end

     

  8. 30 minutos atrás, Walox disse:

    Sabe me dizer se tem alguma função para ser adicionada na pasta Game_Things ? 

    Eu tinha visto algo relacionado a isso envolvendo esta pasta mas não me lembro onde foi mas vou testar como você me disse logo logo retorno com novidades 

    Bom, a única coisa que pode ter acontecido é terem desabilitado o suporte de OTML do seu cliente (que vem por padrão no OTC). Vai no arquivo modules/game_things/things.lua e vê se você acha isso lá:

    osli8YV.png

    load dat, load spr e load otml. Se não tiver o loadOtml, faça o seguinte:
     

    abaixo de:

    local datPath, sprPath

    adicione:

    local otmlPath = "/data/things/things"

    abaixo de:

    if not g_sprites.loadSpr(sprPath) then
        errorMessage = errorMessage .. tr("Unable to load spr file, please place a valid spr in '%s'", sprPath)
    end

    adicione:

    if not g_things.loadOtml(otmlPath) then
        errorMessage = errorMessage .. tr("Unable to load otml file, please place a valid otml in '%s'", otmlPath)
    end

     

  9. 2 horas atrás, ricardoberg disse:

    aqui tbm ficou do msm jeito, n deu erro nem nada, mas n aconteceu nada tbm, tentei colocar o otml dentro da pasta do 854, e tbm n deu nada, e tentei com ele fora da 854

    Tem que ser dentro da pasta data/things, não pode ser dentro da pasta da versão.

    5 horas atrás, Walox disse:

    Obrigado pela dica Rep+

    Aparentemente no meu não funcionou provavelmente eu tenha feito algo errado mas pelo que eu intendo é só por o id da outfit e a position do nome certo ? então, fiz tudo certinho adicionei o código na sources coloquei o otml na pasta things e nada até agora sera que pode me dar uma força nissoScreenshot_1.png.0774d912d04ab74fef39f149d888daf3.pngScreenshot_3.thumb.png.57cd0618395f9b44235ef37f60f32848.pngScreenshot_4.thumb.png.a34313919ab2cafde6e6edcd39a7cc89.png ?

    Você já tentou usar valores negativos? Valores positivo o nome vai pra baixo, valores negativos, pra cima.
    Também recomendo colocar opacidade na outfit pra ver se você tá colocando a outfit certa/sistema funcionando, se a outfit pegar opacidade, só remover. Exemplo:

    4MNVVGF.png

  10. 6 horas atrás, lordbim disse:

    sim, uso o client 11. talvez eu me expressei mal, queria uma magia tipo exori flam: quando eu castar sem alvo aparece uma mira como das runas pra mim clicar onde eu quero, é possivel?

     

    sim, uso o client 11. talvez eu me expressei mal, queria uma magia tipo exori flam: quando eu castar sem alvo aparece uma mira como das runas pra mim clicar onde eu quero, é possivel?

    Eu não conheço o client do Tibia 11, mas, isso não é possível com as outras versões, só com alteração no otclient. Eu acredito que isso não seja possível no Tibia 11 também. Você já viu algum servidor com isso? Mira sem ser de runa/item?

  11. O problema tá no seu banco de dados ou no seu arquivo de deathlist (talkaction). Faça o seguinte, verifique se existe a tabela `mortes`, `killers`, `player_death`, algo assim no seu banco de dados, se sim, abra ela e tire uma print para mim. E também, poste o arquivo talkactions/scripts/deathlist.lua do seu servidor aqui eu analisar. Preciso da print e do arquivo.

  12. Minto, eu pensei que fosse outra coisa, mania de não ler direito, aweiuhaew. Enfim, muda teu código pra isso:

    int LuaScriptInterface::luaDoCastSpell(lua_State* L)
    {
        //creature: doCastSpell("spellName")
        Creature* creature = getUserdata<Creature>(L, 1);
        if(!creature) {
            lua_pushboolean(L, false);
            return 1;
        }
     
        std::string& spellName = getString(L, 2);
        InstantSpell* spell = g_spells->getInstantSpellByName(spellName);
        if(!spell) {
            lua_pushboolean(L, false);
            return 1;
        }
     
        if(Monster* monster = creature->getMonster()) {
            Creature* target = monster->getAttackedCreature();
            if(target)
                spell->castSpell(monster, target);
            else
                spell->castSpell(monster);
     
        	lua_pushboolean(L, true);   
            return 1;
        } else if(Player* player = creature->getPlayer()) {
            if(spell->playerCastInstant(player, spellName)) {
        	    lua_pushboolean(L, true);    
                return 1;
            }
        }
        lua_pushboolean(L, false);   
        return 1;
    }

     

  13. 2 horas atrás, Emanueldk disse:
    Versão do Servidor: TFS - 0.4
    Tipo de Script: moveevent

    tava precisando de um portal que ao passar por cima dele aparecia uma tela com as cidades possíveis para ele viajar para qualquer cidade citada, sem nenhum custo, sem restrição de level, tfs 0.4 servidor 8.6

    OBGD A QUEM ME AJUDAR E DOU REP+

    ue, vc pode fazer teleports pelo map editor, akjakjlalça, não?

  14. 1.2:

    local tile = Tile(fromPosition)
    if tile:hasFlag(TILESTATE_PROTECTIONZONE) then
    	-- erro se tiver em PZ.
    	return true
    end

    0.3.6:

    if (getTileInfo(fromPosition).protection == TRUE) then
    	-- erro se tiver em PZ.
    	return true
    end


    Edit: Só pra deixar claro, o pedido foi: "como bloqueio o uso da ordem fly quando estiver em pz" e não: "como bloqueio o fly em pz", o código acima serve pra checar se o tile (fromPos) é um PZ ou não, se for, todo o script que estiver abaixo disso, não vai funcionar. Se você quiser bloquear o USO do order, use isso dentro do arquivo order.lua, se for FLY em PZ, já é um pouco mais complicado pq eu precisaria entender como criaram o FLY no seu servidor. E outra, pq você quer fazer isso? Qual o problema de fly em pz?

  15. Como tinha dito em outro tópico, estou aqui postando, até pq eu acabei que fiz pra usar em um servidor meu também, rs. De qualquer forma, esse é um código para reposicionar o nome quando uma criatura está com X outfit de forma fácil pelo arquivo OTML. É necessário editar as sources do otclient e compila-lo. 

     

    No arquivo thingtype.cpp, adicione abaixo de:

            if(node2->tag() == "opacity")
                m_opacity = node2->value<float>();

    isso:

            else if(node2->tag() == "name-displacement")
                m_name_displacement = node2->value<Point>();

    No arquivo thingtype.h, adicione acima de:

    float getOpacity() { return m_opacity; }

    adicione isso:

    Point getNameDisplacement() { return m_name_displacement; }

    acima de:

    float m_opacity;

    adicione isso:

    Point m_name_displacement;

    No arquivo creatures.cpp, troque isso:

        // calculate main rects
        Rect backgroundRect = Rect(point.x-(13.5), point.y, 27, 4);
        backgroundRect.bind(parentRect);
    
        Size nameSize = m_nameCache.getTextSize();
        Rect textRect = Rect(point.x - nameSize.width() / 2.0, point.y-12, nameSize);
        textRect.bind(parentRect);

    por isso:

        // calculate main rects
        const ThingTypePtr& thingType = getThingType();
    
        Rect backgroundRect = Rect(point.x - (13.5) + thingType->getNameDisplacement().x, point.y + thingType->getNameDisplacement().y, 27, 4);
        backgroundRect.bind(parentRect);
    
        Size nameSize = m_nameCache.getTextSize();
        Rect textRect = Rect(point.x - (nameSize.width() / 2.0) + thingType->getNameDisplacement().x, point.y - 12 + thingType->getNameDisplacement().y, nameSize);
        textRect.bind(parentRect);

     


    Pronto. Para configurar, basta editar o arquivo .otml do seu otclient, exemplo:

    creatures
      10
        name-displacement: 2 -12
      11
        name-displacement: 5 10
      12
        name-displacement: -4 3

    No caso, alterei a outfit 10 para um displacement no eixo X + 2 e no eixo Y - 12, a outfit 11 para um displacement no eixo X + 5 e no eixo Y + 10 e a outfit 12 para um displacement no eixo X - 4 e no eixo Y + 3. O código foi testado e está funcionando perfeitamente.

  • Quem Está Navegando   0 membros estão online

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