Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] The Source Code → Вопрос по клану

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 13

1

Topic: Вопрос по клану

При созданий клана у всех шаманов и вождя появляется tmpop, хочу сделать чтоб у вождя был оператор а у шаманов tmpop. Поискал нашёл эту функцию в connect.cpp но тока не очень понимаю как это настроить. Подскажите.

2 (edited by Suite 13.08.2014 09:12)

Re: Вопрос по клану

OnlyMan не понимаете как настроить, лучше не трогать. По сабжу:

find

     if (clanmember_get_status(member) >= CLAN_SHAMAN)
          /* PELISH: Giving tmpOP to SHAMAN and CHIEFTAIN on clanchannel */
          conn_set_tmpOP_channel(c,channelname);
     }

change

if (clanmember_get_status(member) == CLAN_SHAMAN) //если шаман то
   conn_set_tmpOP_channel(c,channelname); // /tmpop
else if (clanmember_get_status(member) > CLAN_SHAMAN) //если выше шамана то
   account_set_auth_operator(acc, channelname, 1); // /operator

Добавлено: 13.08.2014 10:11

не тестировал. будут ошибки выкладывай.

3

Re: Вопрос по клану

Вот такие ошибки выдаёт:

1>------ Построение начато: проект: bnetd, Конфигурация: Release Win32 ------
1>Компиляция...
1>connection.cpp
1>..\..\..\source\src\bnetd\connection.cpp(478) : warning C4244: =: преобразование 'time_t' в 'int', возможна потеря данных
1>..\..\..\source\src\bnetd\connection.cpp(1909) : warning C4101: curr: неиспользованная локальная переменная
1>..\..\..\source\src\bnetd\connection.cpp(1913) : warning C4101: created: неиспользованная локальная переменная
1>..\..\..\source\src\bnetd\connection.cpp(1985) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(1988) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(1989) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(1989) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2013) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2016) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2020) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2021) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2021) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2026) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2028) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2029) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2029) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2042) : error C2143: синтаксическая ошибка: отсутствие ";" перед "->"
1>..\..\..\source\src\bnetd\connection.cpp(2042) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2044) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2045) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2045) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2457: __FUNCTION__: встроенный макрос не может находиться вне тела функции
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2664: pvpgn::bnetd::conn_get_socket: невозможно преобразовать параметр 1 из 'int' в 'const pvpgn::bnetd::t_connection *'
1>        Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2227: выражение слева от "->protocol" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>        тип: int
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2228: выражение слева от ".chat" должно представлять класс, структуру или объединение
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2228: выражение слева от ".channel" должно представлять класс, структуру или объединение
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2052) : error C2078: слишком много инициализаторов
1>..\..\..\source\src\bnetd\connection.cpp(2053) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2053) : error C2365: pvpgn::bnetd::conn_send_welcome: переопределение; предыдущим определением было "функция"
1>        ..\..\..\source\src\bnetd\connection.cpp(97): см. объявление 'pvpgn::bnetd::conn_send_welcome'
1>..\..\..\source\src\bnetd\connection.cpp(2055) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2057) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2058) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2058) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2064) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2065) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2065) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2072) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2075) : error C2059: синтаксическая ошибка: if
1>..\..\..\source\src\bnetd\connection.cpp(2078) : error C2059: синтаксическая ошибка: return
1>..\..\..\source\src\bnetd\connection.cpp(2081) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2081) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2082) : error C2448: conn_part_channel: вероятно, инициализатор, использующий стиль функции, является определением функции
1>..\..\..\source\src\bnetd\connection.cpp(2099) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2099) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2099) : error C2062: тип "const char" не требуется
1>..\..\..\source\src\bnetd\connection.cpp(2100) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2100) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2119) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2119) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2119) : error C2062: тип "const char" не требуется
1>..\..\..\source\src\bnetd\connection.cpp(2120) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2120) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C2143: синтаксическая ошибка: отсутствие ")" перед "const"
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>..\..\..\source\src\bnetd\connection.cpp(2139) : error C2059: синтаксическая ошибка: )
1>..\..\..\source\src\bnetd\connection.cpp(2140) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2140) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2151) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2151) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2151) : error C2062: тип "const char" не требуется
1>..\..\..\source\src\bnetd\connection.cpp(2158) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>..\..\..\source\src\bnetd\connection.cpp(2158) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>..\..\..\source\src\bnetd\connection.cpp(2205) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2205) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2206) : error C2448: conn_get_tcpaddr: вероятно, инициализатор, использующий стиль функции, является определением функции
1>..\..\..\source\src\bnetd\connection.cpp(2217) : error C2065: t_connection: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2217) : error C2065: c: необъявленный идентификатор
1>..\..\..\source\src\bnetd\connection.cpp(2217) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
1>Журнал построения был сохранен в "file://c:\1\build\src\bnetd\bnetd.dir\Release\BuildLog.htm"
1>bnetd - ошибок 69, предупреждений 3
========== Построение: успешно: 0, с ошибками: 1, без изменений: 23, пропущено: 0 ==========

4

Re: Вопрос по клану

ничего подобного не наблюдалось у меня. походу ты убрал "}" -_-

if ((clantag) && !((account_get_auth_admin(acc,channelname) == 1) || (account_get_auth_admin(acc,NULL) == 1))) {
        /* PELISH: Admins should be able to join any channel */
        clan = account_get_clan(acc);
        if ((!clan) || (clan_get_clantag(clan) != clantag)) {
            if (!channel)
            {
                char msgtemp[MAX_MESSAGE_LEN];
                snprintf(msgtemp, sizeof(msgtemp), "Unable to join channel %s, there is no member of that clan in the channel!", channelname);
                message_send_text(c, message_type_error, c, msgtemp);

                if (conn_get_game(c) || c->protocol.chat.channel==NULL) {
                    // FIXME: This is not tested to be according to battle.net!!
                    // This is fix for empty clan channels with preventing to join CHANNEL_NAME_BANNED when is used _handle_join_command
                    snprintf(msgtemp, sizeof(msgtemp), "You have been redirected to %s.", CHANNEL_NAME_BANNED);
                    message_send_text(c, message_type_error, c, msgtemp);
                    channel = channellist_find_channel_by_name(CHANNEL_NAME_BANNED,conn_get_country(c),realm_get_name(conn_get_realm(c)));
                } else
                    return 0;
            }
            else
            {
                t_clan * ch_clan;
                if((ch_clan=clanlist_find_clan_by_clantag(clantag))&&(clan_get_channel_type(ch_clan)==1))
                {
                    message_send_text(c, message_type_error, c, "This is a private clan channel, unable to join!");
                    return 0;
                }
            }
        }
        else {
            if ((clan) && (clan_get_clantag(clan) == clantag) && (member = account_get_clanmember(acc))) {
                if (clanmember_get_status(member) == CLAN_SHAMAN)
                    /* PELISH: Giving tmpOP to SHAMAN and CHIEFTAIN on clanchannel */
                    conn_set_tmpOP_channel(c,channelname);
                else if (clanmember_get_status(member) > CLAN_SHAMAN)
                    account_set_auth_operator(acc, channelname, 1);
            }
        }
    }

попробуй это или выложи connection.cpp код в txt ._.

5

Re: Вопрос по клану

Всё работает спасибо большое за помощь!

Добавлено: 13.08.2014 18:06

Только такой вопрос если вождь передаст статус вождя другому то у обйх будет оператор?

6 (edited by Suite 13.08.2014 18:19)

Re: Вопрос по клану

Да

Добавлено: 13.08.2014 19:17

можно сделать как temp operator (tmpop), завтра напишу как (если сам додумаюсь О_О)
или тупо убирать у всех оператор, когда заходят на канал...

7

Re: Вопрос по клану

когда на серве народа много всех подрят убирать надоест

8 (edited by Suite 14.08.2014 06:06)

Re: Вопрос по клану

+ show spoiler
extern int channel_del_connection(t_channel * channel, t_connection * connection, t_message_type mess, char const * text)
{
    t_channelmember * curr;
    t_channelmember * temp;
    t_elem * curr2;
    int clantag=0;
    t_clan * clan = NULL;
    t_clanmember * member = NULL;
    t_account * acc;
    acc = conn_get_account(connection);
    clan = account_get_clan(acc);

    


    if (!channel)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");
        return -1;
    }
    if (!connection)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");
        return -1;
    }

    channel_message_send(channel, mess, connection, text);
    channel_message_log(channel,connection,0,"PARTED");

    curr = channel->memberlist;
    if (curr->connection==connection)
    {
        channel->memberlist = channel->memberlist->next;
        xfree(curr);
    }
    else
    {
        while (curr->next && curr->next->connection!=connection)
            curr = curr->next;

        if (curr->next)
        {
            temp = curr->next;
            curr->next = curr->next->next;
            xfree(temp);
        }
    else
    {
        eventlog(eventlog_level_error,__FUNCTION__,"[%d] connection not in channel member list",conn_get_socket(connection));
        return -1;
    }
    }
    channel->currmembers--;

    if (conn_get_tmpOP_channel(connection) &&
    std::strcmp(conn_get_tmpOP_channel(connection),channel_get_name(channel))==0)
    {
    conn_set_tmpOP_channel(connection,NULL);
    }

    if((strcasecmp(channel->name, "clan ", 5)==0)&&(std::strlen(channel->name)<10))
    clantag = str_to_clantag(&channel->name[5]);

    if ((clantag) && !((account_get_auth_admin(acc,channel->name) == 1) || (account_get_auth_admin(acc,NULL) == 1))) {

    if ((clan) && (clan_get_clantag(clan) == clantag) && (member = account_get_clanmember(acc))) {
    if (clanmember_get_status(member) < CLAN_SHAMAN) 
        account_set_auth_operator(acc, channel->name, 0);
    }
    }

    if (!channel->memberlist && !(channel->flags & channel_flags_permanent)) /* if channel is empty, delete it unless it's a permanent channel */
    {
    channel_destroy(channel,&curr2);
    }

    return 0;
}

замени на channel.cpp
за 100% работоспособность не гарантирую. не тестировал._.
отпишись.

9

Re: Вопрос по клану

>------ Построение начато: проект: bnetd, Конфигурация: Release Win32 ------
1>Компиляция...
1>channel.cpp
1>..\..\..\source\src\bnetd\channel.cpp(501) : error C2065: t_clan: необъявленный идентификатор
1>..\..\..\source\src\bnetd\channel.cpp(501) : error C2275: pvpgn::bnetd::clan: недопустимое использование этого типа в качестве выражения
1>        c:\1\source\src\bnetd\account.h(47): см. объявление 'pvpgn::bnetd::clan'
1>..\..\..\source\src\bnetd\channel.cpp(502) : error C2065: t_clanmember: необъявленный идентификатор
1>..\..\..\source\src\bnetd\channel.cpp(502) : error C2065: member: необъявленный идентификатор
1>..\..\..\source\src\bnetd\channel.cpp(505) : error C2513: pvpgn::bnetd::clan: нет переменных, объявленных перед '='
1>..\..\..\source\src\bnetd\channel.cpp(555) : warning C4002: слишком много фактических параметров для макроопределения 'strcasecmp'
1>..\..\..\source\src\bnetd\channel.cpp(556) : error C3861: str_to_clantag: идентификатор не найден
1>..\..\..\source\src\bnetd\channel.cpp(560) : error C2059: синтаксическая ошибка: &&
1>..\..\..\source\src\bnetd\channel.cpp(561) : error C2065: member: необъявленный идентификатор
1>..\..\..\source\src\bnetd\channel.cpp(561) : error C2065: CLAN_SHAMAN: необъявленный идентификатор
1>..\..\..\source\src\bnetd\channel.cpp(561) : error C3861: clanmember_get_status: идентификатор не найден
1>..\..\..\source\src\bnetd\channel.cpp(566) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
1>Журнал построения был сохранен в "file://c:\1\build\src\bnetd\bnetd.dir\Release\BuildLog.htm"
1>bnetd - ошибок 11, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 23, пропущено: 0 ==========

10

Re: Вопрос по клану

в заголовке укажи путь к х(эндлу) О_О

include "clan.h"

Добавлено: 14.08.2014 17:39

забыл просто про это сказать. думал сам додумаешься ... ._.

11 (edited by OnlyMen 14.08.2014 16:51)

Re: Вопрос по клану

При перезаходе в бнет оператор появляется

Добавлено: 14.08.2014 16:54

а так если просто передать то оператор остаётся тока у старого вождя

12

Re: Вопрос по клану

Не знаю точно, но все должно работать как по маслу, т.к. при заходе на канал функция проверяет является ли шаманом (выше шамана), и дает оператора.
А другая функция делает все наоборот.

Спроси у хомяка. вроде у него такая фича была, только без проверки шамана и тп.

13

Re: Вопрос по клану

Ну сделай проверку если пользователь вождь то будет иконка, а если нет то нет. Вроде в channel.cpp делается.

Posts: 13

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users

forums.pvpgn.pro → [RU] The Source Code → Вопрос по клану