Jump to content

Programação EMOTE SPELLS TFS 0.4


Go to solution Solved by Naze,

Recommended Posts

Preciso de ajuda para por o emote spells no meu servidor TFS 0.4, porém revirei a net atrás e só achei para 1x... Especificando, não quero mudar as magias para laranja no config lua, quero que o player tenha a opção de ver as spells em laranja e/ou amarelo conforme o próprio gosto usando !emote on / !emote off. Tenho acesso as sources tranquilo. Alguém por gentileza poderia me ajudar ? Urgente :ZZsailor moon please GIF

Citar

 

 

 

 

 

 

 

1233333 - Copia.png

Link to post
Share on other sites

  • Assistente
  • Solution

deixa seu emote spells no config.lua como false

em Spells.cpp procure:

SpeakClasses type = SPEAK_SAY;
	if(g_config.getBool(ConfigManager::EMOTE_SPELLS))
		type = SPEAK_MONSTER_SAY;

e abaixo coloque:

	std::string value;
	player->getStorage("474758", value);
	type = value == "1" ? SPEAK_MONSTER_SAY : type;

agora cria uma talkaction tipo !emotespell

e adiciona esse script:

function onSay (cid, words, param)
  if param == "" then
    return doPlayerSendTextMessage(cid, 22, "Fale !emotespell on para ativar, e !emotespell off para desativar.")
  end
  if param =="on" then
	setPlayerStorageValue(cid, 474758, 1)
	doPlayerSendTextMessage(cid, 22, "EmoteSpell Ativado.")
	return true
  end
  if param =="off" then
	setPlayerStorageValue(cid, 474758, 0)
	doPlayerSendTextMessage(cid, 22, "EmoteSpell Desativado.")
	return true
  end
end

Testa ae se der erro avisa que arrrumo, tou no trampo entao nao tem como testa.

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Link to post
Share on other sites

1 hora atrás, Naze disse:

deixa seu emote spells no config.lua como false

em Spells.cpp procure:


SpeakClasses type = SPEAK_SAY;
	if(g_config.getBool(ConfigManager::EMOTE_SPELLS))
		type = SPEAK_MONSTER_SAY;

e abaixo coloque:


	std::string value;
	player->getStorage(474758, value);
	type = value == "1" ? SPEAK_MONSTER_SAY : type;

agora cria uma talkaction tipo !emotespell

e adiciona esse script:


function onSay (cid, words, param)
  if param == "" then
    return doPlayerSendTextMessage(cid, 22, "Fale !emotespell on para ativar, e !emotespell off para desativar.")
  end
  if param =="on" then
	setPlayerStorageValue(cid, 474758, 1)
	doPlayerSendTextMessage(cid, 22, "EmoteSpell Ativado.")
	return true
  end
  if param =="off" then
	setPlayerStorageValue(cid, 474758, 0)
	doPlayerSendTextMessage(cid, 22, "EmoteSpell Desativado.")
	return true
  end
end

Testa ae se der erro avisa que arrrumo, tou no trampo entao nao tem como testa.

Erro na hora de compilar na linha: player->getStorage(474758, value); 

  In member function 'ReturnValue Spells::onPlayerSay(Player*, const std::string&)': 

 invalid conversion from 'int' to 'const char*' 

   initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' 

 *** [obj//spells.o] Error 1 

bugbugbug.png

1233333 - Copia.png

Link to post
Share on other sites

  • Assistente

Coloque aspas no numero, corrigi no post a cima.

player->getStorage("474758", value); 

 

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Link to post
Share on other sites

1 hora atrás, Naze disse:

Coloque aspas no numero, corrigi no post a cima.


player->getStorage("474758", value); 

 

Funcionou 100%, rep + e obrigado Naze !!!!!!!!!!!!!!!!!!

1233333 - Copia.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Heitorzera13
      Galera estou com um bug nao meu ot que é o seguinte!

      Simplesmente eu não consigo colocar o Gold coin nas FLECHAS do SET..
      Sendo assim não consigo fazer a troca pra platinum pelo Elfbot..

      Como resolver ?
      Obg galera do TK!
       
    • By Senju uchira
      .Qual servidor ou website você utiliza como base? 
      tfs0.4 8.6
       
      Qual o motivo deste tópico? 
      queria muda meu servidor todo pra otx
       
       
      como faz pra transforma soucer tfs para otx
       
    • By daniel.braga989
      Olá, estou com 1 problema na hora de compilar as source
      Sistema Operacional
      Debian 8.0 64 bits

      Erro ao executar comando make clean and make.
      make: *** No rule to make target 'clean'.  Stop.


      OBS: EU TESTEI COM OUTRAS SOURCE E O COMANDO FUNCIONOU > MAKE AND MAKE CLEAN
       

    • By STAR NINJA
      Ola rapaziada do tibiaking,estou precisando de um systema de Pet,no qual o pet nao ataque ele apenas te segue e te da alguns buffs!

      Meu nto é 8.60 tfs 4.4
      por ter visto esse systema apenas em ot client nao sei se é possivel no 8.60 se nao for porfavor me avisar!

      Vi esse systema no em um nto polones ntosw:

    • By blackz
      Buenas a todos, eu uso TFS 0.4, rev 4393 (8.71), eu gostaria que o NPC ao vender algo na loja, consultasse se o main backpack (a que fica no inventário) tem slot disponível pra concluir a venda, se não ele não vende e avisa o motivo. Eu acredito que seja no "sendGoods()" em algum desses arquivos a seguir, porém eu não sei fazer, alguém consegue me ajudar?
      PLAYER.CPP
      void Player::updateInventoryGoods(uint32_t itemId) { if(Item::items[itemId].worth) { sendGoods(); return; } for(ShopInfoList::iterator it = shopOffer.begin(); it != shopOffer.end(); ++it) { if(it->itemId != itemId) continue; sendGoods(); break; } }  
      NPC.CPP (provavelmente na penúltima linha desse)
      void Npc::onPlayerTrade(Player* player, ShopEvent_t type, int32_t callback, uint16_t itemId, uint8_t count, uint8_t amount, bool ignore/* = false*/, bool inBackpacks/* = false*/) { if(type == SHOPEVENT_BUY) { if(NpcState* npcState = getState(player, true)) { npcState->amount = amount; npcState->subType = count; npcState->itemId = itemId; npcState->buyPrice = getListItemPrice(itemId, SHOPEVENT_BUY); npcState->ignore = ignore; npcState->inBackpacks = inBackpacks; const NpcResponse* response = getResponse(player, npcState, EVENT_PLAYER_SHOPBUY); executeResponse(player, npcState, response); } } else if(type == SHOPEVENT_SELL) { if(NpcState* npcState = getState(player, true)) { npcState->amount = amount; npcState->subType = count; npcState->itemId = itemId; npcState->sellPrice = getListItemPrice(itemId, SHOPEVENT_SELL); npcState->ignore = ignore; const NpcResponse* response = getResponse(player, npcState, EVENT_PLAYER_SHOPSELL); executeResponse(player, npcState, response); } } if(m_npcEventHandler) m_npcEventHandler->onPlayerTrade(player, callback, itemId, count, amount, ignore, inBackpacks); player->sendGoods(); }  
       
      PROTOCOLGAME.CPP
      void ProtocolGame::sendGoods(const ShopInfoList& shop) { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0x7B); msg->put<uint32_t>((uint32_t)g_game.getMoney(player)); std::map<uint32_t, uint32_t> goodsMap; if(shop.size() >= 5) { for(ShopInfoList::const_iterator sit = shop.begin(); sit != shop.end(); ++sit) { if(sit->sellPrice < 0) continue; int8_t subType = -1; if(sit->subType) { const ItemType& it = Item::items[sit->itemId]; if(it.hasSubType() && !it.stackable) subType = sit->subType; } uint32_t count = player->__getItemTypeCount(sit->itemId, subType); if(count > 0) goodsMap[sit->itemId] = count; } } else { std::map<uint32_t, uint32_t> tmpMap; player->__getAllItemTypeCount(tmpMap); for(ShopInfoList::const_iterator sit = shop.begin(); sit != shop.end(); ++sit) { if(sit->sellPrice < 0) continue; int8_t subType = -1; const ItemType& it = Item::items[sit->itemId]; if(sit->subType && it.hasSubType() && !it.stackable) subType = sit->subType; if(subType != -1) { uint32_t count = subType; if(!it.isFluidContainer() && !it.isSplash()) count = player->__getItemTypeCount(sit->itemId, subType); if(count > 0) goodsMap[sit->itemId] = count; else goodsMap[sit->itemId] = 0; } else goodsMap[sit->itemId] = tmpMap[sit->itemId]; } } msg->put<char>(std::min(goodsMap.size(), (size_t)255)); std::map<uint32_t, uint32_t>::const_iterator it = goodsMap.begin(); for(uint32_t i = 0; it != goodsMap.end() && i < 255; ++it, ++i) { msg->putItemId(it->first); msg->put<char>(std::min(it->second, (uint32_t)255)); } } }  
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...