-
Total de itens
121 -
Registro em
-
Última visita
-
Dias Ganhos
18
Posts postados por PoRaI
-
-
1 minuto atrás, batuax disse:
tem essa script para poketibia dxp mais para 4 players e cada 1 ir pra um local diferente ?
depende pow, cada um clica na alavanca ou 1 clica na alavanca e todos são teleportado para locais diferentes?
-
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
-
vc definiu no items.xml o "worth" da moeda? isso que dá valor a ela.
-
- Este é um post popular.
- Este é um post popular.
Bom, tem um tempo que eu tinha começado a desenvolver esse programa mas havia parado. Estou voltando com ele e vou trazer exclusivamente para o XTibia. Um programa para criar janelas para o OTClient. Ele ainda está um tanto quanto incompleto, mas, estou fazendo este post para mostrar o progresso dele. Quando as principais funções estiverem prontas, irei publica-lo e irei lançar constantes atualizações. É algo que eu vou usar, então, irei trabalhar bem nele.
GIFS:
Spoiler(gif de algumas funções) [15-06-2018 09:08]
(Gancho) [15-06-2018 22:27]
Um plano que eu tinha em mente:Spoiler+ Criar UIWidget+ Carregar Imagem+ Texto e estilização (
text, auto-resize,align, color)+ Image-Border+ Âncora+ Gancho+ Opções/Configurações do UIWidget
+ Fontes de Texto (imagens)
+ Carregar arquivo OTUI
+ Gancho em Redimensionamento (não tão importante)
+ Editor Lua
+ Auto-complete para o editor Lua com as funções do OTClient
+ Vincular funções Lua ao UIWidget
+ Design
+ Criar fontes para o OTClient
Conforme vou atualizando, vou postando aqui. Qualquer duvida ou sugestão, deixe ai nos comentários. :3 -
versão?
-
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
-
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 qualificadoreseditei dnv, testa aí.
-
18 minutos atrás, epaminombas disse:
Deu esse 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 &'
Editei o código lá em cima, não tinha visto que tinha postado aqui, kk.
-
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
-
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.
-
3 minutos atrás, Walox disse:
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
-
eu também tinha editado o comentário com o código, kk.
-
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á:
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
-
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 nisso ?
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: -
-
1 minuto atrás, sidneivascao disse:
https://prnt.sc/ju0um5 , nao marca nada ai , so no "mortes" , mostra uma morte , mais nao sei como ativo ela no servidor
Tenta usar esse deathlist.lua que eu fiz
-
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?
-
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.
-
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; }
- epaminombas reagiu a isso
- 1
-
O problema não é nessa parte do código, rs.
-
2 horas atrás, Emanueldk disse:Versão do Servidor: TFS - 0.4Tipo 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?
-
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? -
O old parar de funcionar é normal, ele não entende os pacotes que o servidor está enviando agora. E para mudar no old client você precisaria de um conhecimento em programação / engenharia reversa pra fazer essa alteração, que não é tão complicada, rs.
-
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.
- wougoplex, nociam, Developer Berg e 10 outros reagiu a isso
- 13
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
Clicar Alavanca e teleporta 5 players
em Scripts
Postado
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.
troca pra isso: (ps: só vai rodar se o item que você tiver usando for o itemid 1945)