• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Aporte] Añadir white text a los channel

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1Bình chọn [Aporte] Añadir white text a los channel el Sáb Dic 02, 2017 10:18 am

    Que tal amigos, la mayoria de los tfs 1.0 - 1.2 no viene incluido en su codigo fuente, la funcionalidad de la
    Código:
    player:sendTextMessage()
    es muy limitada, hoy les quiero enseñar como añadirle un nuevo tipo de letra, color blanca, para que las usen en el channel que quieran!
    Ejemplo de como se ve en un channel:

    bueno sin mas que decirles, empezemos:
    ---------------------------------------------
    1°- Buscan su archivo ( const.h ) y lo abren, luego buscan dentro de ese archivo esta palabra con ( control + f )
    Código:
    MESSAGE_LOOT = 31,
    debajo de esa misma linea añaden esto:
    Código:
       MESSAGE_GUILD = 33, /* White message in channel (+ channelId) */
       MESSAGE_PARTY_MANAGEMENT = 34, /* White message in channel (+ channelId) */
       MESSAGE_PARTY = 35, /* White message in channel (+ channelId) */
    Guardan y luego...
    ---------------------
    Abren su archivo ( chat.h ) y buscan esta palabra
    Código:
    bool removeUser(const Player& player);
    y debajo de esa palabra añaden esto
    Código:
    bool hasUser(const Player& player);
    Guardan y luego....
    ----------------------
    Abren el archivo ( chat.cpp ) y buscan esta palabra
    Código:
    void ChatChannel::sendToAll(const std::string& message, SpeakClasses type) const
    arriba de esta funcion añaden este codigo
    Código:
    bool ChatChannel::hasUser(const Player& player)
    {
       return users.find(player.getID()) != users.end();
    }
    Guardan y luego...
    ---------------------
    Abren el archivo ( luascript.cpp ) y buscan esta palabra
    Código:
    int LuaScriptInterface::luaPlayerSendTextMessage(lua_State* L)
    y aqui como se podran dar de cuenta, es la funcion de sendTextMessage, lo que haras es eliminar esta funcion completamente, ramplazandola por esta que te dejare:
    Código:
    int LuaScriptInterface::luaPlayerSendTextMessage(lua_State* L)
    {
       // player:sendTextMessage(type, text, channelId)
       // player:sendTextMessage(type, text[, position, primaryValue = 0, primaryColor = TEXTCOLOR_NONE[, secondaryValue = 0, secondaryColor = TEXTCOLOR_NONE]])
       Player* player = getUserdata<Player>(L, 1);
       if (!player) {
          lua_pushnil(L);
          return 1;
       }

       int parameters = lua_gettop(L);

       TextMessage message(getNumber<MessageClasses>(L, 2), getString(L, 3));
       if (parameters == 4) {
          uint16_t channelId = getNumber<uint16_t>(L, 4);
          ChatChannel* channel = g_chat->getChannel(*player, channelId);
          if (!channel || !channel->hasUser(*player)) {
             pushBoolean(L, false);
             return 1;
          }
          message.channelId = channelId;
       } else {
          if (parameters >= 6) {
             message.position = getPosition(L, 4);
             message.primary.value = getNumber<int32_t>(L, 5);
             message.primary.color = getNumber<TextColor_t>(L, 6);
          }

          if (parameters >= 8) {
             message.secondary.value = getNumber<int32_t>(L, 7);
             message.secondary.color = getNumber<TextColor_t>(L, 8);
          }
       }

       player->sendTextMessage(message);
       pushBoolean(L, true);

       return 1;
    }
    Guardan y luego...
    ---------------------
    Abren el archivo ( protocolgame.cpp ) y buscan esto
    Código:
    case MESSAGE_HEALED:
          case MESSAGE_HEALED_OTHERS:
          case MESSAGE_EXPERIENCE:
          case MESSAGE_EXPERIENCE_OTHERS: {
             msg.addPosition(message.position);
             msg.add<uint32_t>(message.primary.value);
             msg.addByte(message.primary.color);
             break;
          }
    - abajo de esto debe añadir este otro codigo:
    Código:
    case MESSAGE_GUILD:
          case MESSAGE_PARTY_MANAGEMENT:
          case MESSAGE_PARTY: {
             msg.add<uint16_t>(message.channelId);
             break;
          }
    Guardan y eso seria todo para obtener una nueva funcionalidad de
    Código:
    player:sendTextMessage(messageType, messageText, channelId)
    -- si solo lo ejecutas con estos tres parametros, y le pones un type de MESSAGE_GUILD or MESSAGE_PARTY_MANAGEMENT or MESSAGE_PARTY los mensajes llegaran de color blanco, al channelId que hayas colocado.
    -----------------
    Saludos a todos y espero que les haya gustado!
    Like si te gusto, dudas o sugerencias en los comentarios!



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    2Bình chọn Re: [Aporte] Añadir white text a los channel el Sáb Dic 02, 2017 1:42 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    grande [Tienes que estar registrado y conectado para ver este vínculo] bueno aporte a ver si aquello se puede lograr en un tfs mas antigua pero de igual manera gran aporte +1 (y)



    Ver perfil de usuario http://www.tibiaface.com

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).