Иконка ресурса

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #1
Пользователь Reiko1231 разместил новый ресурс:

Gnome Hunt - Поиск гнома игроками

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

Узнать больше об этом ресурсе...
 

ZeaZon

Участник
Сообщения
117
Реакции
9
Ну грех не опробовать! Чуть позже отпишусь.
--- Добавлено позже ---
Забавный плагин. Мне на MG сервере однозначно кстати. Только немного запарно на каждой карте их расставлять, когда их больше 160...
 
Последнее редактирование:

Tonki_Ton

Script kiddie
Сообщения
614
Реакции
375
Отличная работа. Может быть команду в тхт карты вынести ? что бы для разных карт разные назначать можно было.
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #4
C-подобный:
L 06/18/2017 - 16:45:36: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:45:36: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:45:36: [SM] Call stack trace:
L 06/18/2017 - 16:45:36: [SM]   [0] KillTimer
L 06/18/2017 - 16:45:36: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:46:01: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:46:01: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:46:01: [SM] Call stack trace:
L 06/18/2017 - 16:46:01: [SM]   [0] KillTimer
L 06/18/2017 - 16:46:01: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:48:45: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:48:45: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:48:45: [SM] Call stack trace:
L 06/18/2017 - 16:48:45: [SM]   [0] KillTimer
L 06/18/2017 - 16:48:45: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:50:52: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:50:52: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:50:52: [SM] Call stack trace:
L 06/18/2017 - 16:50:52: [SM]   [0] KillTimer
L 06/18/2017 - 16:50:52: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:53:17: [SM] Exception reported: Invalid timer handle 6f9b0c77 (error 3)
L 06/18/2017 - 16:53:17: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:53:17: [SM] Call stack trace:
 

Ushakov

Участник
Сообщения
4
Реакции
0
C-подобный:
L 06/18/2017 - 16:45:36: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:45:36: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:45:36: [SM] Call stack trace:
L 06/18/2017 - 16:45:36: [SM]   [0] KillTimer
L 06/18/2017 - 16:45:36: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:46:01: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:46:01: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:46:01: [SM] Call stack trace:
L 06/18/2017 - 16:46:01: [SM]   [0] KillTimer
L 06/18/2017 - 16:46:01: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:48:45: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:48:45: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:48:45: [SM] Call stack trace:
L 06/18/2017 - 16:48:45: [SM]   [0] KillTimer
L 06/18/2017 - 16:48:45: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:50:52: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:50:52: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:50:52: [SM] Call stack trace:
L 06/18/2017 - 16:50:52: [SM]   [0] KillTimer
L 06/18/2017 - 16:50:52: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:53:17: [SM] Exception reported: Invalid timer handle 6f9b0c77 (error 3)
L 06/18/2017 - 16:53:17: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:53:17: [SM] Call stack trace:
Тоже самое,работает,но сыпит ошибками..
 

Tonki_Ton

Script kiddie
Сообщения
614
Реакции
375
Тоже самое, но гномы не появляются даже при шансе 100%.
Ставил в одном месте, появлялся.

C-подобный:
L 06/18/2017 - 16:45:36: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:45:36: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:45:36: [SM] Call stack trace:
L 06/18/2017 - 16:45:36: [SM]   [0] KillTimer
L 06/18/2017 - 16:45:36: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:46:01: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:46:01: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:46:01: [SM] Call stack trace:
L 06/18/2017 - 16:46:01: [SM]   [0] KillTimer
L 06/18/2017 - 16:46:01: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:48:45: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:48:45: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:48:45: [SM] Call stack trace:
L 06/18/2017 - 16:48:45: [SM]   [0] KillTimer
L 06/18/2017 - 16:48:45: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:50:52: [SM] Exception reported: Invalid timer handle b24a0b2a (error 1)
L 06/18/2017 - 16:50:52: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:50:52: [SM] Call stack trace:
L 06/18/2017 - 16:50:52: [SM]   [0] KillTimer
L 06/18/2017 - 16:50:52: [SM]   [1] Line 476, gnome_hunt.sp::Ev_RoundStart
L 06/18/2017 - 16:53:17: [SM] Exception reported: Invalid timer handle 6f9b0c77 (error 3)
L 06/18/2017 - 16:53:17: [SM] Blaming: gnome_hunt.smx
L 06/18/2017 - 16:53:17: [SM] Call stack trace:

Я так понял это потому что гном не стоит, т.к. вроде на тех картах где стоит не сыпет.Не уверен.
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #8
Попытка исправить №1.
@leon97leon, если эта ошибка в логах, то гном не появится, т.к. не отрабатывает код его создания из-за ошибки.
 

Вложения

  • gnome_hunt2.zip
    430.5 КБ · Просмотры: 8

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #11
@Reiko1231,
PHP:
void AddFilesToDownloadTable(const char[] path)
{
    Handle file = OpenFile(path, "r");
    if ( file ) {
        char line[PMP];
        while ( !IsEndOfFile(file) && ReadFileLine(file, SZF(line)) )
        {
            TrimString(line);
            AddFileToDownloadsTable(line);
        }
        CloseHandle(file);
    }
}
Уже есть отдельный методмап для работы с файлами. И может стоит проверять строку на пустоту?

PHP:
char map_name[64];
    GetCurrentMap(SZF(map_name));
На картах из воркшопа не будет работать. Как вариант добавить:
PHP:
    if (!strncmp(map_name, "workshop", 8))
    {
        strcopy(map_name, sizeof(map_name), map_name[19]);
    }

PHP:
if ( StrEqual(item, "menu_action_origin") ) {
    // ...
}
else if ( StrEqual(item, "menu_action_angles") ) {
    // ...
}
else if ( StrEqual(item, "menu_action_save") ) {
    // ...
}
Есть же строгая закономерность. Почему бы не проверять только определенные символы строки?

PHP:
    SetEntityMoveType(entity, MOVETYPE_NONE);
Почему бы не перенести в SpawnPropPhysicsByOrigin ?

PHP:
public Action Timer_SpawnGnome(Handle timer)
{
    int length = g_arrayOrigin.Length;
    if ( length == 0 ) {
        return Plugin_Handled;
    }
    
    int gnomeNumber = GetRandomInt(0, length - 1);
    
    float origin[3], angles[3];
    g_arrayOrigin.GetArray(gnomeNumber, origin);
    g_arrayAngles.GetArray(gnomeNumber, angles);
    
    int entity = SpawnPropPhysicsByOrigin(g_model, origin, angles);
    SetEntityMoveType(entity, MOVETYPE_NONE);
    SDKHook(entity, SDKHook_OnTakeDamage, OnTakeDamage);
    g_gnome = EntIndexToEntRef(entity);
    
    if ( g_lifetimeMax > 0.0 ) {
        g_spawnTimer = CreateTimer(GetRandomFloat(g_lifetimeMin, g_lifetimeMax), Timer_AnnounceDespawn, _, TIMER_FLAG_NO_MAPCHANGE);
    }
    else {
        g_spawnTimer = INVALID_HANDLE;
    }
    
    if ( g_onSpawnMessage ) {
        PrintToChatAll("%t", "gnome_spawned");
    }
    return Plugin_Handled;
}

Если условие
PHP:
 int length = g_arrayOrigin.Length;
    if ( length == 0 ) {
        return Plugin_Handled;
    }
выполнится и произойдет return то handle g_spawnTimer сохранит значение и снова может быть ошибка с таймером. Может стоит сделать
PHP:
g_spawnTimer = INVALID_HANDLE;
сразу, еще до проверок.
Тогда из
PHP:
if ( g_lifetimeMax > 0.0 ) {
        g_spawnTimer = CreateTimer(GetRandomFloat(g_lifetimeMin, g_lifetimeMax), Timer_AnnounceDespawn, _, TIMER_FLAG_NO_MAPCHANGE);
    }
    else {
        g_spawnTimer = INVALID_HANDLE;
    }
можно удалить else
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #12
Пользователь Reiko1231 обновил ресурс Gnome Hunt новой записью:

Небольшие фиксы

Исправлена ошибка "Invalid timer handle" во второй раз.

Узнать больше об этом обновлении...

@R1KO, AddFilesToDownloadTable, SpawnPropPhysicsByOrigin брал из своих заранее написанных функций. AddFilesToDownloadTable переделал на File, а SetMoveType() не хочу вносить в функцию SpawnPropPhysicsByOrigin(), т.к. она отвечает только за создание сущности по координатам.
С воркшопом должно же по сути работать, одна и та же функция отвечает за получение названия карты, значит они будут совпадать.
С таймером ошибку поправил, её как раз проглядел.
Закономерность не хочу использовать, пускай для читабельности так будет.
А таймер сбрасывать в начале не хочу, развилка CreateTimer() <-> INVALID_HANDLE мне больше нравится (да и как раз "оптимизация").
Спасибо за замечания.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #13
@Reiko1231, просто для карт из воркшопа имя будет wokshop/цифры/имя_карты
 

over_trax

Участник
Сообщения
1,451
Реакции
488

Qweecky

Участник
Сообщения
29
Реакции
0
А можно как то сделать что бы спавнился не один гном в раунде а несколько. А то выставляешь их кучу а спавнится только один на всей карте - как то не выгодно )
 

fallen1994

Участник
Сообщения
2,357
Реакции
538
Если создать тучу гномов и их всех в итоге "найдут" то они пропадут с концами верно? тоесть нужно их в ручную добавлять всегда?
 
Сверху Снизу