[AMXX Module] RoundControl, Управление раундами, форсация окончания раунда |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
[AMXX Module] RoundControl, Управление раундами, форсация окончания раунда |
s1lent |
20.5.2014, 14:29
Сообщение
|
RoundControl Автор: s1lent Весрия: 2.2 Описание: В основном модуль предназначен для разработчиков, как отдельный инструмент для работы с раундами. Модуль умеет - блокировать полностью раунд, принудительно завершать раунд (Победа CT, T, НИЧЬЯ), блокировать конец раунда по собственному желанию в нужный момент. Также снимает ограничение с CVAR mp_roundtime, можно ставить 500 минут, выше не советую - собьется HUD. Поддерживаемые версии HLDS: - Windows 5758,6027,6132 - Linux 5787,6027,6132 Установка: roundcontrol_amxx.dll | roundcontrol_amxx_i386.so положить в папку /cstrike/amxmodx/modules/ и прописать roundcontrol модуль в /cstrike/amxmodx/configs/modules.ini API: Блокировка окончания раунда Возможность заблокировать окончание раунда только в нужный момент используя совместно с плагином. Регистрируем форвард Код: public plugin_init() Уничтожение форварда Код: new RoundControlHook:g_pWinCondHook; Функция CheckWinConditions, вызывается когда заканчивается раунд, игрок заходит в игру или меняет команду. ROUND_CONTINUE - Продолжает выполнение функции, в нашем случае произойдет конец раунда. ROUND_SUPERCEDE - Блокирует дальнейшее выполнение функции, окончание раунда будет заблокирован. Код: public fw_CheckWinConditions() roundcontrol.inc Код #if defined _roundcontrol_included #endinput #endif #define _roundcontrol_included #if AMXX_VERSION_NUM >= 175 #pragma reqlib roundcontrol #if !defined AMXMODX_NOAUTOLOAD #pragma loadlib roundcontrol #endif #else #pragma library roundcontrol #endif #define DONT_REG -1 #define BLOCK_BOTH 0 #define BLOCK_ONLY_EXPIRED 1 #define FLAG_RETRACT_EXPIRED (1<<0) /* Этот флаг убирает перехват функции HasRoundTimeExpired за ненадобностью. */ #define RC_NONE 0 #define RC_SOUND (1<<0) /* Воспроизводить звук победы. */ #define RC_MESSAGE (1<<1) /* Сообщение окончания раунда. ( Автоматически составляет сообщение по событии eventid ) */ #define RC_SCORE (1<<2) /* Прибавлять команде победные очки. */ #define RC_ALL_AUTO (RC_SOUND|RC_SCORE) #define RC_ALL_CUSTOM (RC_SOUND|RC_MESSAGE|RC_SCORE) #define ROUND_CONTINUE 0 /* Продолжает выполнение функции */ #define ROUND_SUPERCEDE 4 /* Блокирует дальнейшее выполнение функции */ enum (+= 4) { m_bFreezePeriod = 4, m_bBombDropped, m_flRestartRoundTime = 48, // +4 float | W.48 | L.40 m_flCheckWinConditions, // +4 float | W.52 | L.44 m_fRoundCount, // +4 float | W.56 | L.48 m_iRoundTime, // +4 int | W.60 | L.52 m_iRoundTimeSecs, // +4 int | W.64 | L.56 m_iIntroRoundTime, // +4 int | W.68 | L.60 m_fIntroRoundCount, // +4 int | W.72 | L.64 m_iAccountTerrorist, // +4 int | W.76 | L.68 m_iAccountCT, // +4 int | W.80 | L.68 m_iNumTerrorist, // +4 int | W.84 | L.76 m_iNumCT, // +4 int | W.88 | L.80 m_iNumScodeableTerrorist, // +4 int | W.92 | L.84 m_iNumScodeableCT, // +4 int | W.96 | L.88 m_iScodePointCount_Terrorist, // +4 int | W.100 | L.92 m_iScodePointCount_CT, // +4 int | W.104 | L.96 m_iHostagesRescued, // +4 int | W.108 | L.100 m_iHostagesTouched, // +4 int | W.112 | L.104 m_iRoundWinStatus, // +4 int | W.116 | L.108 m_iNumCTWins, // +2 short | W.120 | L.112 m_iNumTerroristWins = 122, // +2 short | W.122 | L.114 m_bTargetBombed = 124, // +1 bool | W.124 | L.116 m_bBombDefused = 125, // +1 bool | W.125 | L.117 m_bMapHasBombTarget = 126, // +1 bool | W.126 | L.118 m_bMapHasBombZone = 127, // +1 bool | W.127 | L.119 m_bMapHasBuyZone = 128, // +1 bool | W.128 | L.120 m_bMapHasRescueZone = 129, // +1 bool | W.129 | L.121 m_bMapHasEscapeZone = 130, // +1 bool | W.130 | L.122 m_iMapHasVIPSafetyZone = 132, // +4 int | W.132 | L.124 m_bMapHasCameras, // +4 bool | W.136 | L.128 m_iC4Timer, // +4 int | W.140 | L.132 m_iC4Guy, // +4 int | W.144 | L.136 m_iLoserBonus, // +4 int | W.148 | L.140 m_iNumConsecutiveCTLoses, // +4 int | W.152 | L.144 m_iNumConsecutiveTerroristLoses, // +4 int | W.156 | L.148 m_fMaxIdlePeriod, // +4 int | W.160 | L.152 m_iLimitTeams, // +4 int | W.164 | L.156 m_bLevelInitialized, // +1 bool | W.168 | L.160 m_bRoundTerminating = 169, // +1 bool | W.169 | L.161 m_bCompleteReset = 170, // +1 bool | W.170 | L.162 m_flRequiredEscapeRatio = 172, // +4 float | W.172 | L.164 m_iNumEscapers, // +4 float | W.176 | L.168 m_iHaveEscaped, // +4 float | W.180 | L.172 m_bCTCantBuy, // +1 bool | W.184 | L.176 m_bTCantBuy = 185, // +1 bool | W.185 | L.177 m_flBombRadius = 188, // +4 float | W.188 | L.180 m_iConsecutiveVIP, // +4 float | W.192 | L.184 m_iTotalGunCount, // +4 int | W.196 | L.188 m_iTotalGrenadeCount, // +4 int | W.200 | L.192 m_iTotalArmourCount, // +4 int | W.204 | L.196 m_iUnBalancedRounds, // +4 int | W.208 | L.200 m_iNumEscapeRounds, // +4 int | W.212 | L.204 m_iMapVotes, // +400 int | W.216 | L.208 m_iLastPick = 616, // +4 int | W.616 | L.608 m_iMaxMapTime, // +4 int | W.620 | L.612 m_iMaxRounds, // +4 int | W.624 | L.616 m_iTotalRoundsPlayed, // +4 int | W.628 | L.620 m_iMaxRoundsWon, // +4 int | W.632 | L.624 m_iStoredSpectValue, // +4 int | W.636 | L.628 m_flForceCameraValue, // +4 float | W.640 | L.632 m_flForceChaseCamValue, // +4 float | W.644 | L.636 m_flFadeToBlackValue, // +4 float | W.648 | L.640 m_pVIP, // +4 pvdata | W.652 | L.644 VIPQueue, // +20 pvdata | W.656 | L.648 m_flIntermissionEndTime = 676, // +4 pvdata | W.676 | L.668 m_flIntermissionStartTime, // +4 float | W.680 | L.672 m_iEndIntermissionButtonHit, // +4 int | W.684 | L.676 m_tmNextPeriodicThink, // +4 float | W.688 | L.680 m_bFirstConnected, // +1 bool | W.692 | L.684 m_bInCareerGame = 693, // +1 bool | W.693 | L.685 m_fCareerRoundMenuTime = 696, // +4 float | W.696 | L.688 m_iCareerMatchWins, // +4 int | W.700 | L.692 m_iRoundWinDifference, // +4 int | W.704 | L.696 m_fCareerMatchMenuTime, // +4 float | W.708 | L.700 m_bSkipScode // +1 bool | W.712 | L.704 }; enum RoundEvent { EventDefault = 0, TargetBombed, VIPEscaped, VIPAssassinated, TerroristEscaped, CTsPreventEscape, EscapingTerroristNeutralized, BombDefused, CTsWin, TerroristWin, RoundDraw, AllHostagesRescued, TargetSaved, HostagesNotRescued, TerroristNotEscaped, VIPNotEscaped, GameCommencing }; enum RoundControlWin { WINSTATUS_CT = 1, WINSTATUS_TERRORIST, WINSTATUS_DRAW }; enum RoundControlFunc { /* * void */ RC_CheckWinConditions = 0, // (void); /* * teamWins - какая команда побеждает. * numWins - победные очки. * eventRound - событие окончание раунда. * bHasExpired - раунд закончился по истечению времени. */ RC_RoundEnd // (RoundControlWin:teamWins,numWins,RoundEvent:eventRound,bool:bHasExpired) }; /* * Регистрация форварда * */ native RoundControlHook:RegisterControl(RoundControlFunc:function,const callback[],Post = 0); /* * Удаление форварда * */ native UnregisterControl(RoundControlFunc:function,RoundControlHook:hookid,Post = 0); /* * Позволяет составить условие для постоянной блокировки * */ native RoundControlHook:SetBlockControl(RoundControlFunc:function,any:...); /* * Удаляет блокировку * */ native RemoveBlockControl(RoundControlFunc:function,RoundControlHook:hookid); /** * Возобновляет вызов форварда * */ native EnableControl(RoundControlHook:hookid,Post = 0); /** * Приостанавливает вызов форварда * */ native DisableControl(RoundControlHook:hookid,Post = 0); /* * Вызов функции из gamedll, в частности функцию CheckWinConditions * Вызов RoundEnd имитирует конце раунда * */ native ExecuteControl(RoundControlFunc:function,any:...); /* * Действует только для RoundEnd и только в PRE * Дает возможность изменить параметры, которые передается в функции. */ native SetReturnParamControl(RoundControlFunc:function,any:...); /* * Устанавливает особые флаги * */ native SetFlagsControl(const flags = FLAG_RETRACT_EXPIRED); /* * Обновить табло счёта и установить/добавить очки команде. * */ native RoundUpdateScoreWins(ctsWins = 0,tsWins = 0,bool:bAdd = true); /* * Принудительное окончание раунда. * * @param winStatus Команда которая побеждает. * @param fDelay Время (задержка), через которое наступит следующий раунд. * @param flags Флаги RC_SOUND, RC_MESSAGE,RC_SCORE. * @param sentence Своё сообщение о победе. (По умолчанию сообщение определяется по eventid) * @param eventid Событие победы, "RoundEvent". * @param numScore Сколько очков получает побежденная команда (По умолчанию +1) * @param bReset Отбирать всю экипировку, фраги, смерти, победы в начале нового раунда. (Идентично sv_restart 1) * * @return nothing */ native RoundEndForceControl(RoundControlWin:winStatus = WINSTATUS_CT,Float:fDelay = 5.0,flags = RC_ALL_CUSTOM,const sentence[] = "#Round_Draw",RoundEvent:eventid = EventDefault,numScore = 1,bool:bReset = false); native set_pgame_int(_offset,_value,_linuxdiff = 8); native get_pgame_int(_offset,_linuxdiff = 8); native set_pgame_float(_offset,Float:_value,_linuxdiff = 8); native Float:get_pgame_float(_offset,_linuxdiff = 8); native set_pgame_short(_offset,Float:_value,_linuxdiff = 8); native get_pgame_short(_offset,_linuxdiff = 8); native set_pgame_bool(_offset,bool:_value,_linuxdiff = 8); native bool:get_pgame_bool(_offset,_linuxdiff = 8); native set_pgame_cbase(_Index_,_offset,_linuxdiff = 8); native get_pgame_cbase(_offset,_linuxdiff = 8); /* * @return адрес указателя g_pGameRules */ native get_pgame_rules(); Принудительно завершить раунд Код /* * Принудительное окончание раунда. * * @param winStatus Команда которая побеждает. * @param fDelay Время (задержка), через которое наступит следующий раунд. * @param flags Флаги RC_SOUND, RC_MESSAGE,RC_SCORE. * @param sentence Своё сообщение о победе. (По умолчанию сообщение определяется по eventid) * @param eventid Событие победы, "RoundEvent". * @param numScore Сколько очков получает побежденная команда (По умолчанию +1) * @param bReset Отбирать всю экипировку, фраги, смерти, победы в начале нового раунда. (Идентично sv_restart 1) * * @return nothing */ native RoundEndForceControl(RoundControlWin:winStatus = WINSTATUS_CT,Float:fDelay = 5.0,flags = RC_ALL_CUSTOM,const sentence[] = "#Round_Draw",RoundEvent:eventid = EventDefault,numScore = 1,bool:bReset = false); Принудительно завершить победный раунд в пользу CT. Код: register_clcmd("say /ctwin","cmdCtwin"); Предыдущие версии: - 1.0 RoundControl_1_0.zip ( 23,17 килобайт ) Кол-во скачиваний: 58 - 2.1 roundcontrol_2_1.zip ( 112,68 килобайт ) Кол-во скачиваний: 120 Примеры использование в других плагинах: Плагин Force Round End от Safety1st Исходники: SVN Repository AGHL.RU Текущая версия 2.2: roundcontrol_2_2.zip ( 122,35 килобайт ) Кол-во скачиваний: 1486
Отредактировал: s1lent, - 31.10.2014, 22:29
|
|
|
|
Safety1st |
3.6.2014, 12:57
Сообщение
|
s1lent, чисто случайно заметил, что версия стала 1.0, а последняя на моей памяти была 0.2. Что изменилось в модуле за это 'время'? В плагине-примере увидел только добавку реакции на месседж SendAudio.
В инклуд добавьте код, с которым ему точно будет лучше: Код #pragma reqlib RoundControl #if !defined AMXMODX_NOAUTOLOAD #pragma loadlib RoundControl #endif И советую в шапку внести один из рекомендуемых вариантов использования API: Код #tryinclude <roundcontrol>
#if !defined _roundcontrol_included #assert "Round Control AMXX module required for plugin!" #endif |
|
Поблагодарили 1 раз
|
|
s1lent |
6.8.2014, 15:31
Сообщение
|
Обновлено 2.1
- Добавлена возможность регистрировать/удалять форварды. - Добавлены новые функции WinCounterTerrorist, WinTerrorist, HasRoundTimeExpired - Добавлены нативы для работы с оффсетами. - Добавлен вызов CheckWinCondition - ExecuteCheckWinCondition. - Добавлен натив для обновление очков RoundUpdateScoreWins - Удален натив RC_Commencing(), теперь это можно сделать оффсетом. Код: set_pgame_bool(m_bFirstConnected,true); Цитата [g/s]et_pgame_int [g/s]et_pgame_bool [g/s]et_pgame_float [g/s]et_pgame_short [g/s]et_pgame_cbase Оффсеты CHalfLifeMultiplay Код #define m_bFreezePeriod 4 #define m_bBombDropped 8 // for Linux -8 #define m_flRestartRoundTime 48 // +4 float | L.40 #define m_flCheckWinConditions 52 // +4 float | L.44 #define m_fRoundCount 56 // +4 float | L.48 #define m_iRoundTime 60 // +4 int | L.52 #define m_iRoundTimeSecs 64 // +4 int | L.56 #define m_iIntroRoundTime 68 // +4 int | L.60 #define m_fIntroRoundCount 72 // +4 int | L.64 #define m_iAccountTerrorist 76 // +4 int | L.68 #define m_iAccountCT 80 // +4 int | L.72 #define m_iNumTerrorist 84 // +4 int | L.76 #define m_iNumCT 88 // +4 int | L.80 #define m_iNumSpawnableTerrorist 92 // +4 int | L.84 #define m_iNumSpawnableCT 96 // +4 int | L.88 #define m_iSpawnPointCount_Terrorist 100 // +4 int | L.92 #define m_iSpawnPointCount_CT 104 // +4 int | L.96 #define m_iHostagesRescued 108 // +4 int | L.100 #define m_iHostagesTouched 112 // +4 int | L.104 #define m_iRoundWinStatus 116 // +4 int | L.108 #define m_iNumCTWins 120 // +2 short | L.112 #define m_iNumTerroristWins 122 // +2 short | L.114 #define m_bTargetBombed 124 // +1 bool | L.116 #define m_bBombDefused 125 // +1 bool | L.117 #define m_bMapHasBombTarget 126 // +1 bool | L.118 #define m_bMapHasBombZone 127 // +1 bool | L.119 #define m_bMapHasBuyZone 128 // +1 bool | L.120 #define m_bMapHasRescueZone 129 // +1 bool | L.121 #define m_bMapHasEscapeZone 130 // +1 bool | L.122 #define m_iMapHasVIPSafetyZone 132 // +4 int | L.124 #define m_bMapHasCameras 136 // +4 bool | L.128 #define m_iC4Timer 140 // +4 int | L.132 #define m_iC4Guy 144 // +4 int | L.136 #define m_iLoserBonus 148 // +4 int | L.140 #define m_iNumConsecutiveCTLoses 152 // +4 int | L.144 #define m_iNumConsecutiveTerroristLoses 156 // +4 int | L.148 #define m_fMaxIdlePeriod 160 // +4 int | L.152 #define m_iLimitTeams 164 // +4 int | L.156 #define m_bLevelInitialized 168 // +1 bool | L.160 #define m_bRoundTerminating 169 // +1 bool | L.161 #define m_bCompleteReset 170 // +1 bool | L.162 #define m_flRequiredEscapeRatio 172 // +4 float | L.164 #define m_iNumEscapers 176 // +4 float | L.168 #define m_iHaveEscaped 180 // +4 float | L.172 #define m_bCTCantBuy 184 // +1 bool | L.176 #define m_bTCantBuy 185 // +1 bool | L.177 #define m_flBombRadius 188 // +4 float | L.180 #define m_iConsecutiveVIP 192 // +4 float | L.184 #define m_iTotalGunCount 196 // +4 int | L.188 #define m_iTotalGrenadeCount 200 // +4 int | L.192 #define m_iTotalArmourCount 204 // +4 int | L.196 #define m_iUnBalancedRounds 208 // +4 int | L.200 #define m_iNumEscapeRounds 212 // +4 int | L.204 #define m_iMapVotes[100] 216 // +400 int | L.208 #define m_iLastPick 616 // +4 int | L.608 #define m_iMaxMapTime 620 // +4 int | L.612 #define m_iMaxRounds 624 // +4 int | L.616 #define m_iTotalRoundsPlayed 628 // +4 int | L.620 #define m_iMaxRoundsWon 632 // +4 int | L.624 #define m_iStoredSpectValue 636 // +4 int | L.628 #define m_flForceCameraValue 640 // +4 float | L.632 #define m_flForceChaseCamValue 644 // +4 float | L.636 #define m_flFadeToBlackValue 648 // +4 float | L.640 #define m_pVIP 652 // +4 pvdata | L.644 #define VIPQueue 656 // +20 pvdata | L.648 #define m_flIntermissionEndTime 676 // +4 pvdata | L.668 #define m_flIntermissionStartTime 680 // +4 float | L.672 #define m_iEndIntermissionButtonHit 684 // +4 int | L.676 #define m_tmNextPeriodicThink 688 // +4 float | L.680 #define m_bFirstConnected 692 // +1 bool | L.684 #define m_bInCareerGame 693 // +1 bool | L.685 #define m_fCareerRoundMenuTime 696 // +4 float | L.688 #define m_iCareerMatchWins 700 // +4 int | L.692 #define m_iRoundWinDifference 704 // +4 int | L.696 #define m_fCareerMatchMenuTime 708 // +4 float | L.700 #define m_bSkipSpawn 712 // +1 bool | L.704 Примеры работ с модулем: 1. Задача: Заблокировать окончание раунда на последующие раунды, если CT уже побеждали более 10 раз и т.п Дальше раунд будет заканчиваться только в пользу T. Код:
2. Задача: Заблокировать окончание раунда по истечению времени раунда, если побеждают T и победных очков более 5. Зарегистрировали форвард на событие, когда время раунда подошло к концу. Если окончание раунда по времени пришло в пользу Т и если очки побед выше 5, то произойдет блокировка окончания раунда. Существует всего 4 RoundEvent, когда раунд заканчивается по истечению времени в пользу некой команды. Цитата Если время раунда подошло к концу: TargetSaved - Побеждают CT, бомба не взорвана. TerroristNotEscaped - Побеждают CT, когда T не сбежали в точку спасения. HostagesNotRescued - Побеждают T, когда заложники не были спасены. VIPNotEscaped - Побеждают T, когда VIP не добежал до точки эвакуации. Код: #include <amxmodx> Примечание: Модуль предназначен для скриптеров, как отдельный инструмент для работы над раундами. Для работы с ним, требуется навыки и знания языка PAWN. |
|
|
|
s1lent |
26.10.2014, 16:10
Сообщение
|
Обновлено 2.2
Добавлено новые нативы -- SetBlockControl -- RemoveBlockControl -- EnableControl -- DisableControl -- ExecuteControl -- SetReturnParamControl -- SetFlagsControl -- get_pgame_rules Изменения - 3 функции WinCounterTerrorist, WinTerrorist, HasRoundTimeExpired были объединены в одну функцию RC_RoundEnd Описание - SetBlockControl - Этот натив немного схож с нативом set_msg_block. Данный натив позволяет заблокировать событие с указанными условиями без надобности регистрировать форвард. - RemoveBlockControl - Снимает блок от SetBlockControl - EnableControl - Влкючает работу форварда зарегистрированный через RegisterControl - DisableControl - Вылкючает работу форварда зарегистрированный через RegisterControl - ExecuteControl - Вызывает функцию CheckWinCondition, если RC_RoundEnd, то заканчивает раунд с условиями. - SetReturnParamControl - Этот натив применима внутри функции RC_RoundEnd в PRE, для изменения параметров. - SetFlagsControl - Данный натив позволяет добавлять флаги, пока применимо добавлять флаг FLAG_RETRACT_EXPIRED, это нужно если вам не нужно в функции RC_RoundEnd параметр - bool:bExpired и для экономия ресура. - get_pgame_rules - Возвращает указатель g_pGameRules, возможен для дальнейшей работы на орфее. |
|
|
|
Type |
26.10.2014, 16:20
Сообщение
|
s1lent, Спасибо,полезно для csdm.
оффтоп С вашими знаниями,пора делать Aim Detector на мете) |
|
|
|
s1lent |
26.10.2014, 16:24
Сообщение
|
Type, может быть)
Возможности с этим модулем практически расширены. Например вот небольшой код, который меняет игровой режим. Суть сценария такова, Террористы должны взорвать бомбу и после выжить 35 секунд. Код: #include <amxmodx> |
|
|
|
Arkshine |
31.10.2014, 14:52
Сообщение
|
You did a good job s1lent. There are some good ideas. I'm here because I've seen your round_control.inc and since I'm redoing my own plugins, I got curious to see what you have done and maybe
It makes me think also all things related to CGameRules members/virtual functions should be supported by AMXX, probably in Ham. I guess I will give a try. |
|
Поблагодарили 7 раз
|
|
kritik |
31.10.2014, 15:11
Сообщение
|
You did a good job s1lent. There are some good ideas. I'm here because I've seen your round_control.inc and since I'm redoing my own plugins, I got curious to see what you have done and maybe It makes me think also all things related to CGameRules members/virtual functions should be supported by AMXX, probably in Ham. I guess I will give a try. I think at first you must change your inadequate policies about modules without source code and no-steam. All your arguments against outdated and irrelevant. |
|
|
|
Arkshine |
31.10.2014, 15:36
Сообщение
|
I'm not sure what you're saying that to me, this is completely unrelated to thread nor what I've said above. And I have no idea what you're talking about.
Отредактировал: Arkshine, - 31.10.2014, 15:41
|
|
Поблагодарили 1 раз
|
|
kritik |
31.10.2014, 15:51
Сообщение
|
I'm not sure what you're saying that to me, this is completely unrelated to thread nor what I've said above. You want to use s1lent's code, but you don't want to take into account of his interests. He written whblocker module which can not be published on alliedmods because of the impossibility to open the source code for all. I think we can solve this problem. |
|
Поблагодарили 1 раз
|
|
KORD_12.7 |
31.10.2014, 15:55
Сообщение
|
|
kritik, ага, можно подумать это Аркшаин придумал все эти правила для AlliedModdders. Он сам юзает ноустим, пиратскую IDA и прочие добряки. Инфа 100%.
Отредактировал: KORD_12.7, - 31.10.2014, 15:58
|
|
|
kritik |
31.10.2014, 15:58
Сообщение
|
kritik, ага, можно подумать это Аркшаин придумал все эти правила для AlliedModdders. Он сам юзает ноустим, пиратскую иду и прочие добряки. Инфа 100%. Опередил)) Весь аллиедмодс 6.1 иду юзает. И почти все там ноустимеры. Как текущий майнтайнер, он может что-то изменить.
Отредактировал: kritik, - 31.10.2014, 15:59
|
|
|
|
Arkshine |
31.10.2014, 16:15
Сообщение
|
Ah, you misunderstand me. I don't intend to steal code, but maybe stealing some of ideas. I know how to code, I'm not some random beginner who copy-paste code.
Anyway, I understand your concern, but I can't do nothing. Each board has his own rules, and just because I'm the official maintainer doesn't mean I can magically change the GPL licence. Personally, I would be okay in such situation, the author sends the source code to someone of the staff, to check its content and compiling it.Then author could use that. Fair comprise. Not sure what are the thoughts of admins (asherkin, BAILOPAN, etc) on this. |
|
Поблагодарили 3 раз
|
|
csnet |
31.10.2014, 16:53
Сообщение
|
подлизы они такие ...
go v cs:go
|
|
Поблагодарили 1 раз
|
|
Bloo |
31.10.2014, 16:54
Сообщение
|
|
csnet, опять не поспал видимо) Это количество скачиваний нового архива)))
что бы не плодить посты: наверняка перезалил))) |
|
|
csnet |
31.10.2014, 16:55
Сообщение
|
я поспал. и тему читаю раз в 15 мин
ну я понимаю что он мог перезалить
Отредактировал: csnet, - 31.10.2014, 16:56
go v cs:go
|
|
|
|
kritik |
31.10.2014, 17:04
Сообщение
|
Ah, you misunderstand me. I don't intend to steal code, but maybe stealing some of ideas. I know how to code, I'm not some random beginner who copy-paste code. Anyway, I understand your concern, but I can't do nothing. Each board has his own rules, and just because I'm the official maintainer doesn't mean I can magically change the GPL licence. Personally, I would be okay in such situation, the author sends the source code to someone of the staff, to check its content and compiling it.Then author could use that. Fair comprise. Not sure what are the thoughts of admins (asherkin, BAILOPAN, etc) on this. I know who are you. Always be found a compromise solution. You can contact with the author of metamod to change its license, such as the LGPL. This would solve many problems. Especially now that project develops by alliedmods team. As far as I know, Jussi normally refers to the modules without source code. On her website, not all listed modules have sources. As maintainer, your word has greater importance for alliedmods owners. |
|
Поблагодарили 2 раз
|
|
Arkshine |
31.10.2014, 17:21
Сообщение
|
I know who are you. Always be found a compromise solution. You can contact with the author of metamod to change its license, such as the LGPL. This would solve many problems. Especially now that project develops by alliedmods team. As far as I know, Jussi normally refers to the modules without source code. On her website, not all listed modules have sources. As maintainer, your word has greater importance for alliedmods owners. I honestly don't know much about GPL and such. I've asked asherkin about this and answered basically "na, lgpl would still require plugins to be under a compatible license. I also doubt the metamod license could ever change after all these years. Not like it required copyright assignment for contributions". If metamod was part of AlliedMods project, an exception could have been granted. But he also answered me: "that said, we wouldn't - if it can't survive the source code being publicly available, it's not going to survive a cheat developer getting their hands on a binary. Decompilation is trivial". While it's a motherfucker answer, you can't deny he's right too. Anyway, this looks like there is no immediate solution unfortunately. That's said I'm always open to suggestions.
Отредактировал: Arkshine, - 31.10.2014, 17:33
|
|
Поблагодарили 2 раз
|
|
kritik |
31.10.2014, 19:38
Сообщение
|
I honestly don't know much about GPL and such. I've asked asherkin about this and answered basically "na, lgpl would still require plugins to be under a compatible license. I also doubt the metamod license could ever change after all these years. Not like it required copyright assignment for contributions". If metamod was part of AlliedMods project, an exception could have been granted. But he also answered me: "that said, we wouldn't - if it can't survive the source code being publicly available, it's not going to survive a cheat developer getting their hands on a binary. Decompilation is trivial". While it's a motherfucker answer, you can't deny he's right too. Anyway, this looks like there is no immediate solution unfortunately. That's said I'm always open to suggestions. Example of changing license: Changing metamod license to LGPL will allow to legally support modules with any license. |
|
|
|
maga |
16.1.2015, 8:27
Сообщение
|
парни поясните:
m_iNumCT m_iAccountCT m_iNumSpawnableCT m_iSpawnPointCount_CT в чем разница между ними ? |
|
|
|