forked from metin2/server
Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
a2f20a0395 | |||
db4542dd7a | |||
0f259307df | |||
db0a0fef64 | |||
671c514cb6 | |||
545aa2d6dd | |||
e921594eff | |||
d4fa88b7e2 | |||
7cc9550efc | |||
c6177d9c73 | |||
903b3bb3a5 | |||
b3a83c5238 | |||
fafa828b27 | |||
7e8009b45d | |||
170be95dc5 |
@ -2,6 +2,10 @@
|
|||||||
cmake-build-debug/
|
cmake-build-debug/
|
||||||
cmake-build-release/
|
cmake-build-release/
|
||||||
|
|
||||||
|
# IDE folders
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
|
||||||
# Dockerfile (in order to allow changes without rebuilding)
|
# Dockerfile (in order to allow changes without rebuilding)
|
||||||
Dockerfile
|
Dockerfile
|
||||||
|
|
||||||
|
580
.idea/editor.xml
generated
Normal file
580
.idea/editor.xml
generated
Normal file
@ -0,0 +1,580 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="BackendCodeEditorSettings">
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_CALLS_CHAIN/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXPRESSION/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_FOR_STMT/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_TERNARY/@EntryValue" value="ALIGN_ALL" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_CLASS_DEFINITION/@EntryValue" value="1" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue" value="2" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_CODE/@EntryValue" value="2" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_SEMICOLON/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_SEMICOLON/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_UNARY_OPERATOR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_ARRAY_ACCESS_BRACKETS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_METHOD_PARENTHESES/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_TERNARY_OPSIGNS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DECLARATION/@EntryValue" value="1" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DEFINITION/@EntryValue" value="1" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_WHILE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_ELSE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_CATCH_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_INDENTATION/@EntryValue" value="All" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_ARGUMENT/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXTENDS_LIST/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_PARAMETER/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_ARGUMENT/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_PARAMETER/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_DECLARATIONS/@EntryValue" value="0" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COLON_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="ON_SINGLE_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/MEMBER_INITIALIZER_LIST_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_NAMESPACE_DEFINITIONS_ON_SAME_LINE/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_COLON/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_COLON/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_METHOD/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_NESTED_DECLARATOR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_METHOD/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_METHOD/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_METHOD/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BETWEEN_CLOSING_ANGLE_BRACKETS_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_DECLARATION_PARENTHESES/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_BLOCKS/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_RPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_RPAR/@EntryValue" value="false" type="bool" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_ARGUMENTS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_PARAMETERS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/FREE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
|
||||||
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexRemoved" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||||
|
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexRemoved" />
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/encodings.xml
generated
Normal file
6
.idea/encodings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="PROJECT" charset="UTF-8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="CMakePythonSetting">
|
||||||
|
<option name="pythonIntegrationState" value="YES" />
|
||||||
|
</component>
|
||||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||||
<component name="CidrRootsConfiguration">
|
<component name="CidrRootsConfiguration">
|
||||||
<excludeRoots>
|
<excludeRoots>
|
||||||
|
8
.idea/runConfigurations/Test_Server.xml
generated
Normal file
8
.idea/runConfigurations/Test_Server.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Test Server" type="CompoundRunConfigurationType">
|
||||||
|
<toRun name="auth" type="CMakeRunConfiguration" />
|
||||||
|
<toRun name="db" type="CMakeRunConfiguration" />
|
||||||
|
<toRun name="game" type="CMakeRunConfiguration" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
.idea/runConfigurations/auth.xml
generated
Normal file
7
.idea/runConfigurations/auth.xml
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="auth" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$PROJECT_DIR$/test/auth" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Metin2 Server" TARGET_NAME="game" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Metin2 Server" RUN_TARGET_NAME="game">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
.idea/runConfigurations/db.xml
generated
Normal file
7
.idea/runConfigurations/db.xml
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="db" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$PROJECT_DIR$/test/db" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Metin2 Server" TARGET_NAME="db" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Metin2 Server" RUN_TARGET_NAME="db">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
.idea/runConfigurations/game.xml
generated
Normal file
7
.idea/runConfigurations/game.xml
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="game" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$PROJECT_DIR$/test/game" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Metin2 Server" TARGET_NAME="game" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Metin2 Server" RUN_TARGET_NAME="game">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
17
Dockerfile
17
Dockerfile
@ -1,4 +1,4 @@
|
|||||||
FROM ubuntu:22.04 as build
|
FROM ubuntu:22.04 AS build
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Set up the CMake repository
|
# Set up the CMake repository
|
||||||
@ -17,7 +17,7 @@ ENV VCPKG_FORCE_SYSTEM_BINARIES=1
|
|||||||
# Install vcpkg and the required libraries
|
# Install vcpkg and the required libraries
|
||||||
RUN git clone https://github.com/Microsoft/vcpkg.git
|
RUN git clone https://github.com/Microsoft/vcpkg.git
|
||||||
RUN bash ./vcpkg/bootstrap-vcpkg.sh
|
RUN bash ./vcpkg/bootstrap-vcpkg.sh
|
||||||
RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog argon2
|
RUN ./vcpkg/vcpkg install cryptopp effolkronium-random libmariadb libevent lzo fmt spdlog argon2
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
@ -26,10 +26,10 @@ RUN mkdir build/
|
|||||||
RUN cd build && cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ..
|
RUN cd build && cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ..
|
||||||
RUN cd build && make -j $(nproc)
|
RUN cd build && make -j $(nproc)
|
||||||
|
|
||||||
FROM ubuntu:22.04 as app
|
FROM ubuntu:22.04 AS app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y python2 libdevil-dev libbsd-dev && apt-get clean
|
RUN apt-get update && apt-get install -y gettext python2 libdevil-dev libbsd-dev && apt-get clean
|
||||||
|
|
||||||
# Copy the binaries from the build stage
|
# Copy the binaries from the build stage
|
||||||
COPY --from=build /app/build/src/db/db /bin/db
|
COPY --from=build /app/build/src/db/db /bin/db
|
||||||
@ -39,6 +39,9 @@ COPY --from=build /app/build/src/quest/qc /bin/qc
|
|||||||
# Copy the game files
|
# Copy the game files
|
||||||
COPY ./gamefiles/ .
|
COPY ./gamefiles/ .
|
||||||
|
|
||||||
|
# Copy the auxiliary files
|
||||||
|
COPY ./docker/ .
|
||||||
|
|
||||||
# Compile the quests
|
# Compile the quests
|
||||||
RUN cd /app/data/quest && python2 make.py
|
RUN cd /app/data/quest && python2 make.py
|
||||||
|
|
||||||
@ -48,3 +51,9 @@ RUN ln -s ./conf/item_names_en.txt item_names.txt
|
|||||||
RUN ln -s ./conf/item_proto.txt item_proto.txt
|
RUN ln -s ./conf/item_proto.txt item_proto.txt
|
||||||
RUN ln -s ./conf/mob_names_en.txt mob_names.txt
|
RUN ln -s ./conf/mob_names_en.txt mob_names.txt
|
||||||
RUN ln -s ./conf/mob_proto.txt mob_proto.txt
|
RUN ln -s ./conf/mob_proto.txt mob_proto.txt
|
||||||
|
|
||||||
|
# Set up default environment variables
|
||||||
|
ENV PUBLIC_BIND_IP=0.0.0.0
|
||||||
|
ENV INTERNAL_BIND_IP=0.0.0.0
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/bin/bash", "docker-entrypoint.sh"]
|
||||||
|
62
README.md
62
README.md
@ -7,14 +7,34 @@ For-profit usage of this material is certainly illegal without the proper
|
|||||||
licensing agreements and is hereby discouraged (not legal advice). Even so, the
|
licensing agreements and is hereby discouraged (not legal advice). Even so, the
|
||||||
nature of this project is HIGHLY EXPERIMENTAL - bugs are to be expected for now.
|
nature of this project is HIGHLY EXPERIMENTAL - bugs are to be expected for now.
|
||||||
|
|
||||||
## 1. Building and usage
|
## 1. Usage
|
||||||
|
|
||||||
### A. Use Docker to instantly bring up a server (recommended)
|
|
||||||
We aim to provide Docker images which _just work_ for your convenience.
|
We aim to provide Docker images which _just work_ for your convenience.
|
||||||
A Docker Compose project is maintained in the [Deployment project](https://git.old-metin2.com/metin2/deploy).
|
A Docker Compose project is maintained in the [Deployment project](https://git.old-metin2.com/metin2/deploy).
|
||||||
Please head over there for further instructions.
|
Please head over there for further instructions.
|
||||||
|
|
||||||
### B. Build the binaries yourself (for advanced users)
|
## 2. Building
|
||||||
|
### A. Building Docker images
|
||||||
|
#### Building a Docker image from the repository
|
||||||
|
In order to build a local Docker image on your local architecture, just build the
|
||||||
|
provided Dockerfile in this project:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build -t metin2/server:test --provenance=false .
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Publishing a multiplatform Docker image manually
|
||||||
|
This command is reserved only for repository maintainers in order to publish
|
||||||
|
new Docker images for public use with the Deployment project.
|
||||||
|
|
||||||
|
**WARNING:** Using WSL for building might lead to QEMU segmentation fault issues;
|
||||||
|
this can be worked around by using `binfmt` and `qemu-user-static` as described
|
||||||
|
[here](https://github.com/docker/buildx/issues/1170#issuecomment-1159350550).
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build --push -t git.old-metin2.com/metin2/server:<IMAGE-TAG-HERE> --platform linux/amd64,linux/arm64 --provenance=false .
|
||||||
|
```
|
||||||
|
|
||||||
|
### B. Building the binaries yourself (for advanced users)
|
||||||
_Sadly, we're unable to provide hand-holding services. You should have some C++ development experience
|
_Sadly, we're unable to provide hand-holding services. You should have some C++ development experience
|
||||||
going forward with this route._
|
going forward with this route._
|
||||||
|
|
||||||
@ -23,6 +43,7 @@ variety. This project is also compatible with WSL, even though WSL can be buggy
|
|||||||
at times. FreeBSD/Windows compatibility is untested and unsupported for the
|
at times. FreeBSD/Windows compatibility is untested and unsupported for the
|
||||||
time being - there are other projects out there if that's what you want.
|
time being - there are other projects out there if that's what you want.
|
||||||
|
|
||||||
|
#### Setting up the requirements
|
||||||
On your Linux box, install the dependencies for `vcpkg` and the other libraries
|
On your Linux box, install the dependencies for `vcpkg` and the other libraries
|
||||||
we're going to install.
|
we're going to install.
|
||||||
```shell
|
```shell
|
||||||
@ -35,22 +56,25 @@ Also install DevIL (1.7.8) and the BSD compatibility library:
|
|||||||
apt-get install -y libdevil-dev libbsd-dev
|
apt-get install -y libdevil-dev libbsd-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Install `vcpkg` according to the [lastest instructions](https://vcpkg.io/en/getting-started.html).
|
Install `vcpkg` according to the [latest instructions](https://vcpkg.io/en/getting-started.html).
|
||||||
|
|
||||||
Build and install the required libraries:
|
Build and install the required libraries:
|
||||||
```shell
|
```shell
|
||||||
vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog argon2
|
vcpkg install cryptopp effolkronium-random libmariadb libevent lzo fmt spdlog argon2
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, it's time to build your binaries. Your commands should look along the lines of:
|
#### Building the binaries
|
||||||
|
Instead of building the binaries directly from the CLI, we recommend using an IDE, since
|
||||||
|
you're probably doing some kind of development anyway. See the "Development" section for more information on that.
|
||||||
|
|
||||||
|
If you decide do build from the command line, make sure to find the right path for `vcpkg.cmake` and run the following:
|
||||||
```shell
|
```shell
|
||||||
mkdir build/
|
mkdir build/
|
||||||
cd build && cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake ..
|
cd build && cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake ..
|
||||||
make -j $(nproc)
|
make -j $(nproc)
|
||||||
```
|
```
|
||||||
|
|
||||||
If everything goes right, you should now have compiled binaries you should just be able to use
|
If everything goes right, you should now have compiled binaries in the `build/` directory.
|
||||||
as a drop-in replacement for your BSD binaries in your favourite serverfiles.
|
|
||||||
|
|
||||||
## 2. Development
|
## 2. Development
|
||||||
The preferred IDE in order to develop and debug the server is [CLion](https://www.jetbrains.com/clion/),
|
The preferred IDE in order to develop and debug the server is [CLion](https://www.jetbrains.com/clion/),
|
||||||
@ -68,6 +92,21 @@ in order to start them at once.
|
|||||||
5. Of course, you'll need a MySQL 5.x database, Valgrind and any other development
|
5. Of course, you'll need a MySQL 5.x database, Valgrind and any other development
|
||||||
goodies you wish. Also, a lot of time.
|
goodies you wish. Also, a lot of time.
|
||||||
|
|
||||||
|
### Creating a minimal test server (WIP)
|
||||||
|
|
||||||
|
In CLion, create a `test` directory containing the `auth`, `db`, and `game`
|
||||||
|
directories, and then symlink the following files in the `gamefiles` directory.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ln -s ../../gamefiles/conf/item_names_en.txt ./test/db/item_names.txt
|
||||||
|
ln -s ../../gamefiles/conf/item_proto.txt ./test/db/item_proto.txt
|
||||||
|
ln -s ../../gamefiles/conf/mob_names_en.txt ./test/db/mob_names.txt
|
||||||
|
ln -s ../../gamefiles/conf/mob_proto.txt ./test/db/mob_proto.txt
|
||||||
|
|
||||||
|
ln -s ../../gamefiles/data ./test/auth/data
|
||||||
|
ln -s ../../gamefiles/data ./test/game/data
|
||||||
|
```
|
||||||
|
|
||||||
## 3. Improvements
|
## 3. Improvements
|
||||||
### Major improvements
|
### Major improvements
|
||||||
- The binaries run on 64-bit Linux with the network stack being partially rewritten in Libevent.
|
- The binaries run on 64-bit Linux with the network stack being partially rewritten in Libevent.
|
||||||
@ -79,7 +118,7 @@ goodies you wish. Also, a lot of time.
|
|||||||
- Removed unused functionalities (time bombs, activation servers, other Korean stuff)
|
- Removed unused functionalities (time bombs, activation servers, other Korean stuff)
|
||||||
- Switched to the [effolkronium/random PRNG](https://github.com/effolkronium/random) instead of the standard C functions.
|
- Switched to the [effolkronium/random PRNG](https://github.com/effolkronium/random) instead of the standard C functions.
|
||||||
- Refactored macros to modern C++ functions.
|
- Refactored macros to modern C++ functions.
|
||||||
- Network settings are manually configurable through the `PUBLIC_IP`, `PUBLIC_BIND_IP`, `INTERNAL_IP`, `INTERNAL_BIND_IP` settings in the `CONFIG` file. (Might need further work)
|
- Network settings are manually configurable through the `PUBLIC_IP`, `PUBLIC_BIND_IP`, `INTERNAL_IP`, `INTERNAL_BIND_IP` settings in the `game.conf` file. (Might need further work)
|
||||||
- Refactored logging to use [spdlog](https://github.com/gabime/spdlog) for more consistent function calls.
|
- Refactored logging to use [spdlog](https://github.com/gabime/spdlog) for more consistent function calls.
|
||||||
- Refactored login code to use Argon2ID.
|
- Refactored login code to use Argon2ID.
|
||||||
|
|
||||||
@ -102,8 +141,7 @@ This is a very serious security risk and one of the reasons this project is stil
|
|||||||
- Fixed buffer overruns and integer overflows in SQL queries.
|
- Fixed buffer overruns and integer overflows in SQL queries.
|
||||||
|
|
||||||
## 5. Further plans
|
## 5. Further plans
|
||||||
- Migrate `conf.txt` and `CONFIG` to a modern dotenv-like format, which would enable pretty nice Docker images.
|
- Migrate `db.conf` and `game.conf` to a modern dotenv-like format, which would enable pretty nice Docker images.
|
||||||
- Add a health check to the Docker image.
|
|
||||||
- Use the [fmt](https://fmt.dev/latest/index.html) library for safe and modern string formatting.
|
- Use the [fmt](https://fmt.dev/latest/index.html) library for safe and modern string formatting.
|
||||||
- Handle kernel signals (SIGTERM, SIGHUP etc.) for gracefully shutting down the game server.
|
- Handle kernel signals (SIGTERM, SIGHUP etc.) for gracefully shutting down the game server.
|
||||||
- Improve memory safety.
|
- Improve memory safety.
|
||||||
|
18
docker/conf/db.conf.tmpl
Normal file
18
docker/conf/db.conf.tmpl
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
WELCOME_MSG = "DB Server has been started"
|
||||||
|
|
||||||
|
SQL_ACCOUNT = "${MYSQL_HOST} ${MYSQL_DB_ACCOUNT} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}"
|
||||||
|
SQL_COMMON = "${MYSQL_HOST} ${MYSQL_DB_COMMON} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}"
|
||||||
|
SQL_PLAYER = "${MYSQL_HOST} ${MYSQL_DB_PLAYER} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}"
|
||||||
|
|
||||||
|
TABLE_POSTFIX = ""
|
||||||
|
|
||||||
|
BIND_PORT = ${DB_PORT}
|
||||||
|
DB_SLEEP_MSEC = 10
|
||||||
|
CLIENT_HEART_FPS = 10
|
||||||
|
HASH_PLAYER_LIFE_SEC = 600
|
||||||
|
BACKUP_LIMIT_SEC = 3600
|
||||||
|
PLAYER_ID_START = 100
|
||||||
|
PLAYER_DELETE_LEVEL_LIMIT = 70
|
||||||
|
|
||||||
|
ITEM_ID_RANGE = 10000001 20000000
|
||||||
|
TEST_SERVER = ${TEST_SERVER}
|
42
docker/conf/game.conf.tmpl
Normal file
42
docker/conf/game.conf.tmpl
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
HOSTNAME: ${GAME_HOSTNAME}
|
||||||
|
CHANNEL: ${GAME_CHANNEL}
|
||||||
|
|
||||||
|
PUBLIC_IP: ${PUBLIC_IP}
|
||||||
|
PUBLIC_BIND_IP: ${PUBLIC_BIND_IP}
|
||||||
|
INTERNAL_IP: ${INTERNAL_IP}
|
||||||
|
INTERNAL_BIND_IP: ${INTERNAL_BIND_IP}
|
||||||
|
PORT: ${GAME_PORT}
|
||||||
|
P2P_PORT: ${GAME_P2P_PORT}
|
||||||
|
|
||||||
|
DB_ADDR: ${DB_ADDR}
|
||||||
|
DB_PORT: ${DB_PORT}
|
||||||
|
|
||||||
|
COMMON_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_COMMON} ${MYSQL_PORT}
|
||||||
|
LOG_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_LOG} ${MYSQL_PORT}
|
||||||
|
PLAYER_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_PLAYER} ${MYSQL_PORT}
|
||||||
|
TABLE_POSTFIX:
|
||||||
|
|
||||||
|
AUTH_SERVER: ${GAME_AUTH_SERVER}
|
||||||
|
MARK_SERVER: ${GAME_MARK_SERVER}
|
||||||
|
|
||||||
|
MAP_ALLOW: ${GAME_MAP_ALLOW}
|
||||||
|
MAX_LEVEL: ${GAME_MAX_LEVEL}
|
||||||
|
PK_PROTECT_LEVEL: 15
|
||||||
|
SPAM_BLOCK_MAX_LEVEL: 90
|
||||||
|
GOLD_DROP_LIMIT_TIME: 10
|
||||||
|
WEB_APP_URL: ${WEB_APP_URL}
|
||||||
|
WEB_APP_KEY: ${WEB_APP_KEY}
|
||||||
|
|
||||||
|
CHECK_MULTIHACK: 0
|
||||||
|
SPEEDHACK_LIMIT_COUNT: 300
|
||||||
|
SPEEDHACK_LIMIT_BONUS: 80
|
||||||
|
|
||||||
|
ADMINPAGE_IP: 127.0.0.1
|
||||||
|
ADMINPAGE_PASSWORD: metin2adminpass
|
||||||
|
|
||||||
|
PASSES_PER_SEC: 25
|
||||||
|
SAVE_EVENT_SECOND_CYCLE: 180
|
||||||
|
PING_EVENT_SECOND_CYCLE: 180
|
||||||
|
VIEW_RANGE: 8000
|
||||||
|
|
||||||
|
TEST_SERVER: ${TEST_SERVER}
|
9
docker/docker-entrypoint.sh
Normal file
9
docker/docker-entrypoint.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# docker-entrypoint.sh
|
||||||
|
|
||||||
|
# Generate configuration files based on environment variables
|
||||||
|
envsubst <"/app/conf/db.conf.tmpl" >"/app/db.conf"
|
||||||
|
envsubst <"/app/conf/game.conf.tmpl" >"/app/game.conf"
|
||||||
|
|
||||||
|
# Run the standard container command.
|
||||||
|
exec "$@"
|
@ -46,7 +46,7 @@ Mysql-Funktion der neuesten Generation.
|
|||||||
--]]
|
--]]
|
||||||
mysql_query = function(query)
|
mysql_query = function(query)
|
||||||
if not pre then
|
if not pre then
|
||||||
local rt = io.open('CONFIG','r'):read('*all')
|
local rt = io.open('game.conf','r'):read('*all')
|
||||||
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
|
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
|
||||||
end
|
end
|
||||||
math.randomseed(os.time())
|
math.randomseed(os.time())
|
||||||
|
106
src/common/stl.h
106
src/common/stl.h
@ -1,5 +1,4 @@
|
|||||||
#ifndef __INC_METIN_II_STL_H__
|
#pragma once
|
||||||
#define __INC_METIN_II_STL_H__
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -19,15 +18,15 @@
|
|||||||
inline void stl_lowers(std::string& rstRet)
|
inline void stl_lowers(std::string& rstRet)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < rstRet.length(); ++i)
|
for (size_t i = 0; i < rstRet.length(); ++i)
|
||||||
rstRet[i] = tolower(rstRet[i]);
|
rstRet[i] = (char) tolower(rstRet[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct stringhash
|
struct stringhash
|
||||||
{
|
{
|
||||||
size_t operator () (const std::string & str) const
|
size_t operator () (const std::string & str) const
|
||||||
{
|
{
|
||||||
const unsigned char * s = (const unsigned char*) str.c_str();
|
const auto * s = (const unsigned char*) str.c_str();
|
||||||
const unsigned char * end = s + str.size();
|
const auto * end = s + str.size();
|
||||||
size_t h = 0;
|
size_t h = 0;
|
||||||
|
|
||||||
while (s < end)
|
while (s < end)
|
||||||
@ -39,98 +38,3 @@ struct stringhash
|
|||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// code from tr1/functional_hash.h
|
|
||||||
template<typename T>
|
|
||||||
struct hash;
|
|
||||||
|
|
||||||
template<typename _Tp>
|
|
||||||
struct hash<_Tp*>
|
|
||||||
: public std::unary_function<_Tp*, std::size_t>
|
|
||||||
{
|
|
||||||
std::size_t
|
|
||||||
operator()(_Tp* __p) const
|
|
||||||
{ return reinterpret_cast<std::size_t>(__p); }
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace std
|
|
||||||
{
|
|
||||||
template <class container, class Pred>
|
|
||||||
void erase_if (container & a, typename container::iterator first, typename container::iterator past, Pred pred)
|
|
||||||
{
|
|
||||||
while (first != past)
|
|
||||||
if (pred(*first))
|
|
||||||
a.erase(first++);
|
|
||||||
else
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class container>
|
|
||||||
void wipe(container & a)
|
|
||||||
{
|
|
||||||
typename container::iterator first, past;
|
|
||||||
|
|
||||||
first = a.begin();
|
|
||||||
past = a.end();
|
|
||||||
|
|
||||||
while (first != past)
|
|
||||||
delete *(first++);
|
|
||||||
|
|
||||||
a.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class container>
|
|
||||||
void wipe_second(container & a)
|
|
||||||
{
|
|
||||||
typename container::iterator first, past;
|
|
||||||
|
|
||||||
first = a.begin();
|
|
||||||
past = a.end();
|
|
||||||
|
|
||||||
while (first != past)
|
|
||||||
{
|
|
||||||
delete first->second;
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class _Ty>
|
|
||||||
class void_mem_fun_t : public unary_function<_Ty *, void>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit void_mem_fun_t(void (_Ty::*_Pm)()) : _Ptr(_Pm)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()(_Ty* p) const
|
|
||||||
{
|
|
||||||
((p->*_Ptr)());
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
void (_Ty::*_Ptr)();
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class _Ty> inline
|
|
||||||
void_mem_fun_t<_Ty> void_mem_fun(void (_Ty::*_Pm)())
|
|
||||||
{ return (void_mem_fun_t<_Ty>(_Pm)); }
|
|
||||||
|
|
||||||
template<class _Ty>
|
|
||||||
class void_mem_fun_ref_t : public unary_function<_Ty, void>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit void_mem_fun_ref_t(void (_Ty::*_Pm)()) : _Ptr(_Pm) {}
|
|
||||||
void operator()(_Ty& x) const
|
|
||||||
{ return ((x.*_Ptr)()); }
|
|
||||||
private:
|
|
||||||
void (_Ty::*_Ptr)();
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class _Ty> inline
|
|
||||||
void_mem_fun_ref_t<_Ty> void_mem_fun_ref(void (_Ty::*_Pm)())
|
|
||||||
{ return (void_mem_fun_ref_t< _Ty>(_Pm)); }
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -735,10 +735,11 @@ typedef struct SEmpireSelectPacket
|
|||||||
|
|
||||||
typedef struct SPacketGDSetup
|
typedef struct SPacketGDSetup
|
||||||
{
|
{
|
||||||
char szPublicIP[16]; // Public IP which listen to users
|
BYTE bChannel;
|
||||||
BYTE bChannel; // 채널
|
char szPublicIP[16]; // Public IP which clients connect to
|
||||||
WORD wListenPort; // 클라이언트가 접속하는 포트 번호
|
WORD wListenPort; // Port number which clients connect to
|
||||||
WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호
|
char szInternalIP[16]; // Internal IP which other servers connect to
|
||||||
|
WORD wP2PPort; // Port number which other servers connect to
|
||||||
LONG alMaps[MAP_ALLOW_MAX_LEN];
|
LONG alMaps[MAP_ALLOW_MAX_LEN];
|
||||||
DWORD dwLoginCount;
|
DWORD dwLoginCount;
|
||||||
BYTE bAuthServer;
|
BYTE bAuthServer;
|
||||||
|
@ -20,23 +20,19 @@ endif()
|
|||||||
# Treat char variables as signed, especially useful for ARM builds
|
# Treat char variables as signed, especially useful for ARM builds
|
||||||
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
|
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
|
||||||
|
|
||||||
# Find dependencies
|
# Find and link dependencies
|
||||||
|
|
||||||
#
|
#
|
||||||
# vcpkg dependencies
|
# vcpkg dependencies
|
||||||
#
|
#
|
||||||
|
|
||||||
# Boost
|
|
||||||
find_package(Boost COMPONENTS system REQUIRED)
|
|
||||||
target_link_libraries (${PROJECT_NAME} PRIVATE Boost::boost Boost::system)
|
|
||||||
|
|
||||||
# Libevent
|
# Libevent
|
||||||
find_package(Libevent CONFIG REQUIRED)
|
find_package(Libevent CONFIG REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE libevent::core libevent::extra libevent::pthreads)
|
target_link_libraries(${PROJECT_NAME} libevent::core libevent::extra libevent::pthreads)
|
||||||
|
|
||||||
# effolkronium/random
|
# effolkronium/random
|
||||||
find_package(effolkronium_random CONFIG REQUIRED)
|
find_package(effolkronium_random CONFIG REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE effolkronium_random)
|
target_link_libraries(${PROJECT_NAME} effolkronium_random)
|
||||||
|
|
||||||
#
|
#
|
||||||
# System-provided dependencies
|
# System-provided dependencies
|
||||||
@ -45,9 +41,9 @@ target_link_libraries(${PROJECT_NAME} PRIVATE effolkronium_random)
|
|||||||
# Pthreads
|
# Pthreads
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
|
target_link_libraries(${PROJECT_NAME} Threads::Threads)
|
||||||
|
|
||||||
# LibBSD
|
# LibBSD
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE bsd)
|
target_link_libraries(${PROJECT_NAME} bsd)
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE libpoly libsql libthecore)
|
target_link_libraries(${PROJECT_NAME} libpoly libsql libthecore)
|
||||||
|
@ -1145,9 +1145,10 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
peer->SetChannel(p->bChannel);
|
||||||
peer->SetPublicIP(p->szPublicIP);
|
peer->SetPublicIP(p->szPublicIP);
|
||||||
peer->SetChannel(p->bChannel);
|
|
||||||
peer->SetListenPort(p->wListenPort);
|
peer->SetListenPort(p->wListenPort);
|
||||||
|
peer->SetInternalIP(p->szInternalIP);
|
||||||
peer->SetP2PPort(p->wP2PPort);
|
peer->SetP2PPort(p->wP2PPort);
|
||||||
peer->SetMaps(p->alMaps);
|
peer->SetMaps(p->alMaps);
|
||||||
|
|
||||||
@ -1264,9 +1265,9 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
|
|||||||
SPDLOG_DEBUG("SETUP: channel {} listen {} p2p {} count {}", peer->GetChannel(), p->wListenPort, p->wP2PPort, bMapCount);
|
SPDLOG_DEBUG("SETUP: channel {} listen {} p2p {} count {}", peer->GetChannel(), p->wListenPort, p->wP2PPort, bMapCount);
|
||||||
|
|
||||||
TPacketDGP2P p2pSetupPacket;
|
TPacketDGP2P p2pSetupPacket;
|
||||||
p2pSetupPacket.wPort = peer->GetP2PPort();
|
|
||||||
p2pSetupPacket.bChannel = peer->GetChannel();
|
p2pSetupPacket.bChannel = peer->GetChannel();
|
||||||
strlcpy(p2pSetupPacket.szHost, peer->GetPublicIP(), sizeof(p2pSetupPacket.szHost));
|
strlcpy(p2pSetupPacket.szHost, peer->GetInternalIP(), sizeof(p2pSetupPacket.szHost));
|
||||||
|
p2pSetupPacket.wPort = peer->GetP2PPort();
|
||||||
|
|
||||||
for (itertype(m_peerList) i = m_peerList.begin(); i != m_peerList.end();++i)
|
for (itertype(m_peerList) i = m_peerList.begin(); i != m_peerList.end();++i)
|
||||||
{
|
{
|
||||||
|
@ -381,8 +381,8 @@ class CClientManager : public singleton<CClientManager>
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int m_looping;
|
int m_looping;
|
||||||
event_base * m_base;
|
event_base * m_base = nullptr;
|
||||||
evconnlistener * m_listener;
|
evconnlistener * m_listener = nullptr;
|
||||||
TPeerList m_peerList;
|
TPeerList m_peerList;
|
||||||
|
|
||||||
CPeer * m_pkAuthPeer;
|
CPeer * m_pkAuthPeer;
|
||||||
|
@ -16,14 +16,12 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
void SetPlayerDBName(const char* c_pszPlayerDBName);
|
|
||||||
void SetTablePostfix(const char* c_pszTablePostfix);
|
void SetTablePostfix(const char* c_pszTablePostfix);
|
||||||
int Start();
|
int Start();
|
||||||
|
|
||||||
std::string g_stTablePostfix;
|
std::string g_stTablePostfix;
|
||||||
std::string g_stLocaleNameColumn = "name";
|
std::string g_stLocaleNameColumn = "name";
|
||||||
std::string g_stLocale = "euckr";
|
std::string g_stLocale = "euckr";
|
||||||
std::string g_stPlayerDBName = "";
|
|
||||||
|
|
||||||
|
|
||||||
BOOL g_test_server = false;
|
BOOL g_test_server = false;
|
||||||
@ -95,7 +93,7 @@ int main()
|
|||||||
DBManager.Quit();
|
DBManager.Quit();
|
||||||
int iCount;
|
int iCount;
|
||||||
|
|
||||||
while (1)
|
while (true)
|
||||||
{
|
{
|
||||||
iCount = 0;
|
iCount = 0;
|
||||||
|
|
||||||
@ -126,9 +124,9 @@ void emptybeat(LPHEART heart, int pulse)
|
|||||||
//
|
//
|
||||||
int Start()
|
int Start()
|
||||||
{
|
{
|
||||||
if (!CConfig::instance().LoadFile("conf.txt"))
|
if (!CConfig::instance().LoadFile("db.conf"))
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("Loading conf.txt failed.");
|
SPDLOG_ERROR("Loading db.conf failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,83 +217,56 @@ int Start()
|
|||||||
int iPort;
|
int iPort;
|
||||||
char line[256+1];
|
char line[256+1];
|
||||||
|
|
||||||
if (CConfig::instance().GetValue("SQL_PLAYER", line, 256))
|
if (CConfig::instance().GetValue("SQL_PLAYER", line, 256)) {
|
||||||
{
|
|
||||||
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
||||||
SPDLOG_DEBUG("Connecting to MySQL server (player)");
|
SPDLOG_DEBUG("Connecting to MySQL server (player)");
|
||||||
|
|
||||||
int iRetry = 5;
|
if (!CDBManager::instance().Connect(SQL_PLAYER, szAddr, iPort, szDB, szUser, szPassword)) {
|
||||||
|
SPDLOG_CRITICAL("Connection to MySQL server (player) failed!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
do
|
SPDLOG_INFO("Connected to MySQL server (player)");
|
||||||
{
|
|
||||||
if (CDBManager::instance().Connect(SQL_PLAYER, szAddr, iPort, szDB, szUser, szPassword))
|
|
||||||
{
|
|
||||||
SPDLOG_INFO("Connected to MySQL server (player)");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SPDLOG_ERROR("Connection to MySQL server (player) failed, retrying in 5 seconds");
|
|
||||||
sleep(5);
|
|
||||||
} while (iRetry--);
|
|
||||||
SetPlayerDBName(szDB);
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
SPDLOG_CRITICAL("SQL_PLAYER not configured");
|
||||||
SPDLOG_ERROR("SQL_PLAYER not configured");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CConfig::instance().GetValue("SQL_ACCOUNT", line, 256))
|
if (CConfig::instance().GetValue("SQL_ACCOUNT", line, 256)) {
|
||||||
{
|
|
||||||
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
||||||
SPDLOG_DEBUG("connecting to MySQL server (account)");
|
SPDLOG_DEBUG("Connecting to MySQL server (account)");
|
||||||
|
|
||||||
int iRetry = 5;
|
if (!CDBManager::instance().Connect(SQL_ACCOUNT, szAddr, iPort, szDB, szUser, szPassword)) {
|
||||||
|
SPDLOG_CRITICAL("Connection to MySQL server (account) failed!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
do
|
SPDLOG_INFO("Connected to MySQL server (account)");
|
||||||
{
|
|
||||||
if (CDBManager::instance().Connect(SQL_ACCOUNT, szAddr, iPort, szDB, szUser, szPassword))
|
|
||||||
{
|
|
||||||
SPDLOG_DEBUG(" OK");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SPDLOG_DEBUG(" failed, retrying in 5 seconds");
|
|
||||||
SPDLOG_ERROR(" failed, retrying in 5 seconds");
|
|
||||||
sleep(5);
|
|
||||||
} while (iRetry--);
|
|
||||||
SPDLOG_INFO("Success ACCOUNT");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("SQL_ACCOUNT not configured");
|
SPDLOG_CRITICAL("SQL_ACCOUNT not configured");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CConfig::instance().GetValue("SQL_COMMON", line, 256))
|
if (CConfig::instance().GetValue("SQL_COMMON", line, 256))
|
||||||
{
|
{
|
||||||
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
|
||||||
SPDLOG_DEBUG("connecting to MySQL server (common)");
|
SPDLOG_DEBUG("Connecting to MySQL server (common)");
|
||||||
|
|
||||||
int iRetry = 5;
|
|
||||||
|
|
||||||
do
|
if (!CDBManager::instance().Connect(SQL_COMMON, szAddr, iPort, szDB, szUser, szPassword))
|
||||||
{
|
{
|
||||||
if (CDBManager::instance().Connect(SQL_COMMON, szAddr, iPort, szDB, szUser, szPassword))
|
SPDLOG_CRITICAL("Connection to MySQL server (common) failed!");
|
||||||
{
|
return false;
|
||||||
SPDLOG_DEBUG(" OK");
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SPDLOG_DEBUG(" failed, retrying in 5 seconds");
|
SPDLOG_INFO("Connected to MySQL server (common)");
|
||||||
SPDLOG_ERROR(" failed, retrying in 5 seconds");
|
|
||||||
sleep(5);
|
|
||||||
} while (iRetry--);
|
|
||||||
SPDLOG_INFO("Success COMMON");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("SQL_COMMON not configured");
|
SPDLOG_CRITICAL("SQL_COMMON not configured");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,20 +297,3 @@ const char * GetTablePostfix()
|
|||||||
{
|
{
|
||||||
return g_stTablePostfix.c_str();
|
return g_stTablePostfix.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetPlayerDBName(const char* c_pszPlayerDBName)
|
|
||||||
{
|
|
||||||
if (! c_pszPlayerDBName || ! *c_pszPlayerDBName)
|
|
||||||
g_stPlayerDBName = "";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_stPlayerDBName = c_pszPlayerDBName;
|
|
||||||
g_stPlayerDBName += ".";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char * GetPlayerDBName()
|
|
||||||
{
|
|
||||||
return g_stPlayerDBName.c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -38,15 +38,18 @@ class CPeer : public CPeerBase
|
|||||||
DWORD GetUserCount();
|
DWORD GetUserCount();
|
||||||
void SetUserCount(DWORD dwCount);
|
void SetUserCount(DWORD dwCount);
|
||||||
|
|
||||||
void SetPublicIP(const char * ip) { m_stPublicIP = ip; }
|
|
||||||
const char * GetPublicIP() { return m_stPublicIP.c_str(); }
|
|
||||||
|
|
||||||
void SetChannel(BYTE bChannel) { m_bChannel = bChannel; }
|
void SetChannel(BYTE bChannel) { m_bChannel = bChannel; }
|
||||||
BYTE GetChannel() { return m_bChannel; }
|
BYTE GetChannel() { return m_bChannel; }
|
||||||
|
|
||||||
|
void SetPublicIP(const char * ip) { m_stPublicIP = ip; }
|
||||||
|
const char * GetPublicIP() { return m_stPublicIP.c_str(); }
|
||||||
|
|
||||||
void SetListenPort(WORD wPort) { m_wListenPort = wPort; }
|
void SetListenPort(WORD wPort) { m_wListenPort = wPort; }
|
||||||
WORD GetListenPort() { return m_wListenPort; }
|
WORD GetListenPort() { return m_wListenPort; }
|
||||||
|
|
||||||
|
void SetInternalIP(const char * ip) { m_stInternalIP = ip; }
|
||||||
|
const char * GetInternalIP() { return m_stInternalIP.c_str(); }
|
||||||
|
|
||||||
void SetP2PPort(WORD wPort);
|
void SetP2PPort(WORD wPort);
|
||||||
WORD GetP2PPort() { return m_wP2PPort; }
|
WORD GetP2PPort() { return m_wP2PPort; }
|
||||||
|
|
||||||
@ -72,6 +75,7 @@ class CPeer : public CPeerBase
|
|||||||
TItemIDRangeTable m_itemSpareRange;
|
TItemIDRangeTable m_itemSpareRange;
|
||||||
|
|
||||||
std::string m_stPublicIP;
|
std::string m_stPublicIP;
|
||||||
|
std::string m_stInternalIP;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,15 +20,15 @@ endif()
|
|||||||
# Treat char variables as signed, especially useful for ARM builds
|
# Treat char variables as signed, especially useful for ARM builds
|
||||||
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
|
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
|
||||||
|
|
||||||
# Find dependencies
|
# Find and link dependencies
|
||||||
|
|
||||||
#
|
#
|
||||||
# vcpkg dependencies
|
# vcpkg dependencies
|
||||||
#
|
#
|
||||||
|
|
||||||
# MySQL
|
# MariaDB
|
||||||
find_package(unofficial-libmysql REQUIRED)
|
find_package(unofficial-libmariadb REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} unofficial::libmysql::libmysql)
|
target_link_libraries(${PROJECT_NAME} unofficial::libmariadb)
|
||||||
|
|
||||||
# Argon2
|
# Argon2
|
||||||
find_package(unofficial-argon2 CONFIG REQUIRED)
|
find_package(unofficial-argon2 CONFIG REQUIRED)
|
||||||
@ -36,11 +36,7 @@ target_link_libraries(${PROJECT_NAME} unofficial::argon2::libargon2)
|
|||||||
|
|
||||||
# Crypto++
|
# Crypto++
|
||||||
find_package(cryptopp CONFIG REQUIRED)
|
find_package(cryptopp CONFIG REQUIRED)
|
||||||
target_link_libraries (${PROJECT_NAME} cryptopp::cryptopp)
|
target_link_libraries(${PROJECT_NAME} cryptopp::cryptopp)
|
||||||
|
|
||||||
# Boost
|
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
target_link_libraries (${PROJECT_NAME} Boost::boost)
|
|
||||||
|
|
||||||
# Libevent
|
# Libevent
|
||||||
find_package(Libevent CONFIG REQUIRED)
|
find_package(Libevent CONFIG REQUIRED)
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include "dragon_soul_table.h"
|
#include "dragon_soul_table.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "DragonSoul.h"
|
#include "DragonSoul.h"
|
||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
|
|
||||||
typedef std::vector <std::string> TTokenVector;
|
typedef std::vector <std::string> TTokenVector;
|
||||||
|
|
||||||
@ -389,7 +388,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
|
|||||||
pDH->SetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX, iCharge);
|
pDH->SetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX, iCharge);
|
||||||
ch->AutoGiveItem(pDH, true);
|
ch->AutoGiveItem(pDH, true);
|
||||||
|
|
||||||
std::string s = boost::lexical_cast <std::string> (iCharge);
|
std::string s = std::to_string(iCharge);
|
||||||
s += "%s";
|
s += "%s";
|
||||||
LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_SUCCESS", s.c_str());
|
LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_SUCCESS", s.c_str());
|
||||||
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Dragon Stone remaining duration has been extracted."));
|
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Dragon Stone remaining duration has been extracted."));
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#ifndef IFILEMONITOR_INCLUDED
|
#ifndef IFILEMONITOR_INCLUDED
|
||||||
#define IFILEMONITOR_INCLUDED
|
#define IFILEMONITOR_INCLUDED
|
||||||
|
|
||||||
//#include <boost/function.hpp>
|
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
enum eFileUpdatedOptions
|
enum eFileUpdatedOptions
|
||||||
|
@ -1,31 +1,13 @@
|
|||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
#ifndef DEBUG_ALLOC
|
|
||||||
#include <boost/pool/object_pool.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "affect.h"
|
#include "affect.h"
|
||||||
|
|
||||||
#ifndef DEBUG_ALLOC
|
|
||||||
boost::object_pool<CAffect> affect_pool;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CAffect* CAffect::Acquire()
|
CAffect* CAffect::Acquire()
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_ALLOC
|
|
||||||
return affect_pool.malloc();
|
|
||||||
#else
|
|
||||||
return M2_NEW CAffect;
|
return M2_NEW CAffect;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAffect::Release(CAffect* p)
|
void CAffect::Release(CAffect* p)
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_ALLOC
|
|
||||||
affect_pool.free(p);
|
|
||||||
#else
|
|
||||||
M2_DELETE(p);
|
M2_DELETE(p);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include "item_manager.h"
|
#include "item_manager.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "desc_client.h"
|
#include "desc_client.h"
|
||||||
#include <common/tables.h>
|
#include <common/tables.h>
|
||||||
|
@ -4244,7 +4244,7 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
|
|||||||
|
|
||||||
void CHARACTER::DenyToParty(LPCHARACTER member)
|
void CHARACTER::DenyToParty(LPCHARACTER member)
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("DenyToParty {} member {} {}", GetName(), member->GetName(), (void*) get_pointer(member->m_pkPartyRequestEvent));
|
SPDLOG_DEBUG("DenyToParty {} member {} {}", GetName(), member->GetName(), (void*) member->m_pkPartyRequestEvent.get());
|
||||||
|
|
||||||
if (!member->m_pkPartyRequestEvent)
|
if (!member->m_pkPartyRequestEvent)
|
||||||
return;
|
return;
|
||||||
@ -4270,7 +4270,7 @@ void CHARACTER::DenyToParty(LPCHARACTER member)
|
|||||||
|
|
||||||
void CHARACTER::AcceptToParty(LPCHARACTER member)
|
void CHARACTER::AcceptToParty(LPCHARACTER member)
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("AcceptToParty {} member {} {}", GetName(), member->GetName(), (void*) get_pointer(member->m_pkPartyRequestEvent));
|
SPDLOG_DEBUG("AcceptToParty {} member {} {}", GetName(), member->GetName(), (void*) member->m_pkPartyRequestEvent.get());
|
||||||
|
|
||||||
if (!member->m_pkPartyRequestEvent)
|
if (!member->m_pkPartyRequestEvent)
|
||||||
return;
|
return;
|
||||||
|
@ -160,7 +160,7 @@ void CHARACTER::StartAffectEvent()
|
|||||||
char_event_info* info = AllocEventInfo<char_event_info>();
|
char_event_info* info = AllocEventInfo<char_event_info>();
|
||||||
info->ch = this;
|
info->ch = this;
|
||||||
m_pkAffectEvent = event_create(affect_event, info, passes_per_sec);
|
m_pkAffectEvent = event_create(affect_event, info, passes_per_sec);
|
||||||
SPDLOG_DEBUG("StartAffectEvent {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkAffectEvent));
|
SPDLOG_DEBUG("StartAffectEvent {} {} {}", GetName(), (void*) this, (void*) m_pkAffectEvent.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::ClearAffect(bool bSave)
|
void CHARACTER::ClearAffect(bool bSave)
|
||||||
|
@ -1009,7 +1009,8 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
|
|||||||
|
|
||||||
if (!vec_bSlots.empty())
|
if (!vec_bSlots.empty())
|
||||||
{
|
{
|
||||||
random_shuffle(vec_bSlots.begin(), vec_bSlots.end());
|
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
|
||||||
|
std::shuffle(vec_bSlots.begin(), vec_bSlots.end(), std::default_random_engine(seed));
|
||||||
|
|
||||||
int iQty = std::min<int>(vec_bSlots.size(), r.iInventoryQty);
|
int iQty = std::min<int>(vec_bSlots.size(), r.iInventoryQty);
|
||||||
|
|
||||||
@ -1041,7 +1042,9 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
|
|||||||
|
|
||||||
if (!vec_bSlots.empty())
|
if (!vec_bSlots.empty())
|
||||||
{
|
{
|
||||||
random_shuffle(vec_bSlots.begin(), vec_bSlots.end());
|
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
|
||||||
|
std::shuffle(vec_bSlots.begin(), vec_bSlots.end(), std::default_random_engine(seed));
|
||||||
|
|
||||||
int iQty;
|
int iQty;
|
||||||
|
|
||||||
if (isDropAllEquipments)
|
if (isDropAllEquipments)
|
||||||
@ -1420,7 +1423,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
|
|||||||
{
|
{
|
||||||
if (m_pkDeadEvent)
|
if (m_pkDeadEvent)
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("DEAD_EVENT_CANCEL: {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkDeadEvent));
|
SPDLOG_DEBUG("DEAD_EVENT_CANCEL: {} {} {}", GetName(), (void*) this, (void*) m_pkDeadEvent.get());
|
||||||
event_cancel(&m_pkDeadEvent);
|
event_cancel(&m_pkDeadEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1456,7 +1459,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDLOG_DEBUG("DEAD_EVENT_CREATE: {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkDeadEvent));
|
SPDLOG_DEBUG("DEAD_EVENT_CREATE: {} {} {}", GetName(), (void*) this, (void*) m_pkDeadEvent.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pkExchange != NULL)
|
if (m_pkExchange != NULL)
|
||||||
|
@ -16,10 +16,6 @@
|
|||||||
#include "questlua.h"
|
#include "questlua.h"
|
||||||
#include "locale_service.h"
|
#include "locale_service.h"
|
||||||
|
|
||||||
#ifndef __GNUC__
|
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CHARACTER_MANAGER::CHARACTER_MANAGER() :
|
CHARACTER_MANAGER::CHARACTER_MANAGER() :
|
||||||
m_iVIDCount(0),
|
m_iVIDCount(0),
|
||||||
m_pkChrSelectedStone(NULL),
|
m_pkChrSelectedStone(NULL),
|
||||||
@ -646,9 +642,7 @@ struct FuncUpdateAndResetChatCounter
|
|||||||
void CHARACTER_MANAGER::Update(int iPulse)
|
void CHARACTER_MANAGER::Update(int iPulse)
|
||||||
{
|
{
|
||||||
using namespace std;
|
using namespace std;
|
||||||
#ifdef __GNUC__
|
|
||||||
using namespace __gnu_cxx;
|
using namespace __gnu_cxx;
|
||||||
#endif
|
|
||||||
|
|
||||||
BeginPendingDestroy();
|
BeginPendingDestroy();
|
||||||
|
|
||||||
@ -659,11 +653,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
|||||||
// 컨테이너 복사
|
// 컨테이너 복사
|
||||||
CHARACTER_VECTOR v;
|
CHARACTER_VECTOR v;
|
||||||
v.reserve(m_map_pkPCChr.size());
|
v.reserve(m_map_pkPCChr.size());
|
||||||
#ifdef __GNUC__
|
|
||||||
transform(m_map_pkPCChr.begin(), m_map_pkPCChr.end(), back_inserter(v), select2nd<NAME_MAP::value_type>());
|
transform(m_map_pkPCChr.begin(), m_map_pkPCChr.end(), back_inserter(v), select2nd<NAME_MAP::value_type>());
|
||||||
#else
|
|
||||||
transform(m_map_pkPCChr.begin(), m_map_pkPCChr.end(), back_inserter(v), boost::bind(&NAME_MAP::value_type::second, _1));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (0 == (iPulse % PASSES_PER_SEC(5)))
|
if (0 == (iPulse % PASSES_PER_SEC(5)))
|
||||||
{
|
{
|
||||||
@ -673,7 +663,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//for_each(v.begin(), v.end(), mem_fun(&CFSM::Update));
|
//for_each(v.begin(), v.end(), mem_fun(&CFSM::Update));
|
||||||
for_each(v.begin(), v.end(), bind2nd(mem_fun(&CHARACTER::UpdateCharacter), iPulse));
|
for (auto& ch : v) ch->UpdateCharacter(iPulse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -686,12 +676,9 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
|||||||
{
|
{
|
||||||
CHARACTER_VECTOR v;
|
CHARACTER_VECTOR v;
|
||||||
v.reserve(m_set_pkChrState.size());
|
v.reserve(m_set_pkChrState.size());
|
||||||
#ifdef __GNUC__
|
|
||||||
transform(m_set_pkChrState.begin(), m_set_pkChrState.end(), back_inserter(v), identity<CHARACTER_SET::value_type>());
|
transform(m_set_pkChrState.begin(), m_set_pkChrState.end(), back_inserter(v), identity<CHARACTER_SET::value_type>());
|
||||||
#else
|
|
||||||
v.insert(v.end(), m_set_pkChrState.begin(), m_set_pkChrState.end());
|
for (auto& ch : v) ch->UpdateStateMachine(iPulse);
|
||||||
#endif
|
|
||||||
for_each(v.begin(), v.end(), bind2nd(mem_fun(&CHARACTER::UpdateStateMachine), iPulse));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -701,8 +688,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
|||||||
|
|
||||||
if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(xmas::MOB_SANTA_VNUM, i))
|
if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(xmas::MOB_SANTA_VNUM, i))
|
||||||
{
|
{
|
||||||
for_each(i.begin(), i.end(),
|
for (auto& ch : i) ch->UpdateStateMachine(iPulse);
|
||||||
bind2nd(mem_fun(&CHARACTER::UpdateStateMachine), iPulse));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1029,16 +1015,10 @@ void CHARACTER_MANAGER::FlushPendingDestroy()
|
|||||||
CharacterVectorInteractor::CharacterVectorInteractor(const CHARACTER_SET & r)
|
CharacterVectorInteractor::CharacterVectorInteractor(const CHARACTER_SET & r)
|
||||||
{
|
{
|
||||||
using namespace std;
|
using namespace std;
|
||||||
#ifdef __GNUC__
|
|
||||||
using namespace __gnu_cxx;
|
using namespace __gnu_cxx;
|
||||||
#endif
|
|
||||||
|
|
||||||
reserve(r.size());
|
reserve(r.size());
|
||||||
#ifdef __GNUC__
|
|
||||||
transform(r.begin(), r.end(), back_inserter(*this), identity<CHARACTER_SET::value_type>());
|
transform(r.begin(), r.end(), back_inserter(*this), identity<CHARACTER_SET::value_type>());
|
||||||
#else
|
|
||||||
insert(end(), r.begin(), r.end());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (CHARACTER_MANAGER::instance().BeginPendingDestroy())
|
if (CHARACTER_MANAGER::instance().BeginPendingDestroy())
|
||||||
m_bMyBegin = true;
|
m_bMyBegin = true;
|
||||||
|
@ -28,6 +28,11 @@
|
|||||||
#include "threeway_war.h"
|
#include "threeway_war.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include <common/VnumHelper.h>
|
#include <common/VnumHelper.h>
|
||||||
|
#include <cryptopp/cryptlib.h>
|
||||||
|
#include <cryptopp/hmac.h>
|
||||||
|
#include <cryptopp/sha.h>
|
||||||
|
#include <cryptopp/hex.h>
|
||||||
|
#include <cryptopp/filters.h>
|
||||||
#ifdef __AUCTION__
|
#ifdef __AUCTION__
|
||||||
#include "auction_manager.h"
|
#include "auction_manager.h"
|
||||||
#endif
|
#endif
|
||||||
@ -2231,13 +2236,32 @@ ACMD(do_cube)
|
|||||||
|
|
||||||
ACMD(do_in_game_mall)
|
ACMD(do_in_game_mall)
|
||||||
{
|
{
|
||||||
char country_code[3];
|
// Build the URL
|
||||||
country_code[0] = 'd'; country_code[1] = 'e'; country_code[2] = '\0';
|
const auto expire_time = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||||
|
const auto expire_timestamp = std::chrono::duration_cast<std::chrono::seconds>(expire_time.time_since_epoch()).count();
|
||||||
|
|
||||||
|
std::string url = fmt::format("{}/mall/auth?pid={}&sid={}&expires={}", g_strWebAppURL, ch->GetPlayerID(), g_server_id, expire_timestamp);
|
||||||
|
|
||||||
|
// Compute hex-encoded SHA-256 URL signature
|
||||||
|
std::string mac, encoded;
|
||||||
|
try {
|
||||||
|
CryptoPP::HMAC<CryptoPP::SHA256> hmac((CryptoPP::byte*) g_strWebAppKey.c_str(), g_strWebAppKey.size());
|
||||||
|
CryptoPP::StringSource ss(url, true, new CryptoPP::HashFilter(hmac, new CryptoPP::StringSink(mac)));
|
||||||
|
|
||||||
|
encoded.clear();
|
||||||
|
CryptoPP::StringSource(mac, true, new CryptoPP::HexEncoder(new CryptoPP::StringSink(encoded), false));
|
||||||
|
}
|
||||||
|
catch (const CryptoPP::Exception& e) {
|
||||||
|
SPDLOG_ERROR("Failed to create HMAC signature: {}", e.what());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the signature to the URL
|
||||||
|
url += fmt::format("&signature={}", encoded);
|
||||||
|
|
||||||
|
// Send the command to the player
|
||||||
char buf[512+1];
|
char buf[512+1];
|
||||||
|
snprintf(buf, sizeof(buf), "mall %s", url.c_str());
|
||||||
snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d",
|
|
||||||
g_strWebMallURL.c_str(), ch->GetPlayerID(), country_code, g_server_id);
|
|
||||||
|
|
||||||
ch->ChatPacket(CHAT_TYPE_COMMAND, buf);
|
ch->ChatPacket(CHAT_TYPE_COMMAND, buf);
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,12 @@
|
|||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
// Networking
|
// Networking
|
||||||
char g_szPublicBindIP[16] = "0.0.0.0";
|
string g_szPublicBindIP = "0.0.0.0";
|
||||||
char g_szPublicIP[16] = "0";
|
string g_szPublicIP;
|
||||||
WORD mother_port = 50080;
|
WORD mother_port = 50080;
|
||||||
|
|
||||||
char g_szInternalBindIP[16] = "0.0.0.0";
|
string g_szInternalBindIP = "0.0.0.0";
|
||||||
char g_szInternalIP[16] = "0";
|
string g_szInternalIP;
|
||||||
WORD p2p_port = 50900;
|
WORD p2p_port = 50900;
|
||||||
|
|
||||||
char db_addr[ADDRESS_MAX_LEN + 1];
|
char db_addr[ADDRESS_MAX_LEN + 1];
|
||||||
@ -104,7 +104,8 @@ int VIEW_RANGE = 5000;
|
|||||||
int VIEW_BONUS_RANGE = 500;
|
int VIEW_BONUS_RANGE = 500;
|
||||||
|
|
||||||
int g_server_id = 0;
|
int g_server_id = 0;
|
||||||
string g_strWebMallURL = "www.metin2.de";
|
string g_strWebAppURL = "";
|
||||||
|
string g_strWebAppKey = "";
|
||||||
|
|
||||||
unsigned int g_uiSpamBlockDuration = 60 * 15; // 기본 15분
|
unsigned int g_uiSpamBlockDuration = 60 * 15; // 기본 15분
|
||||||
unsigned int g_uiSpamBlockScore = 100; // 기본 100점
|
unsigned int g_uiSpamBlockScore = 100; // 기본 100점
|
||||||
@ -262,16 +263,16 @@ bool GetIPInfo()
|
|||||||
sai->sin_addr.s_addr == 16777343) // ignore if address is 127.0.0.1
|
sai->sin_addr.s_addr == 16777343) // ignore if address is 127.0.0.1
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (IsPrivateIP(sai->sin_addr) && g_szInternalIP[0] == '0')
|
if (IsPrivateIP(sai->sin_addr) && g_szInternalIP.empty())
|
||||||
{
|
{
|
||||||
char * ip = inet_ntoa(sai->sin_addr);
|
char * ip = inet_ntoa(sai->sin_addr);
|
||||||
strlcpy(g_szInternalIP, ip, sizeof(g_szInternalIP));
|
g_szInternalIP = string(ip);
|
||||||
SPDLOG_WARN("Internal IP automatically configured: {} interface {}", ip, ifap->ifa_name);
|
SPDLOG_WARN("Internal IP automatically configured: {} interface {}", ip, ifap->ifa_name);
|
||||||
}
|
}
|
||||||
else if (g_szPublicIP[0] == '0')
|
else if (g_szPublicIP.empty())
|
||||||
{
|
{
|
||||||
char * ip = inet_ntoa(sai->sin_addr);
|
char * ip = inet_ntoa(sai->sin_addr);
|
||||||
strlcpy(g_szPublicIP, ip, sizeof(g_szPublicIP));
|
g_szPublicIP = string(ip);
|
||||||
SPDLOG_WARN("Public IP automatically configured: {} interface {}", ip, ifap->ifa_name);
|
SPDLOG_WARN("Public IP automatically configured: {} interface {}", ip, ifap->ifa_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -292,7 +293,7 @@ void config_init(const string& st_localeServiceName)
|
|||||||
string st_configFileName;
|
string st_configFileName;
|
||||||
|
|
||||||
st_configFileName.reserve(32);
|
st_configFileName.reserve(32);
|
||||||
st_configFileName = "CONFIG";
|
st_configFileName = "game.conf";
|
||||||
|
|
||||||
if (!st_localeServiceName.empty())
|
if (!st_localeServiceName.empty())
|
||||||
{
|
{
|
||||||
@ -354,6 +355,10 @@ void config_init(const string& st_localeServiceName)
|
|||||||
{
|
{
|
||||||
parse_token(buf, token_string, value_string);
|
parse_token(buf, token_string, value_string);
|
||||||
|
|
||||||
|
// If the configuration string is empty, ignore this line
|
||||||
|
if (strcmp(value_string, "") == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
TOKEN("BLOCK_LOGIN")
|
TOKEN("BLOCK_LOGIN")
|
||||||
{
|
{
|
||||||
g_stBlockDate = value_string;
|
g_stBlockDate = value_string;
|
||||||
@ -661,6 +666,10 @@ void config_init(const string& st_localeServiceName)
|
|||||||
{
|
{
|
||||||
parse_token(buf, token_string, value_string);
|
parse_token(buf, token_string, value_string);
|
||||||
|
|
||||||
|
// If the configuration string is empty, ignore this line
|
||||||
|
if (strcmp(value_string, "") == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
TOKEN("empire_whisper")
|
TOKEN("empire_whisper")
|
||||||
{
|
{
|
||||||
bool b_value = 0;
|
bool b_value = 0;
|
||||||
@ -698,13 +707,14 @@ void config_init(const string& st_localeServiceName)
|
|||||||
|
|
||||||
TOKEN("public_ip")
|
TOKEN("public_ip")
|
||||||
{
|
{
|
||||||
strlcpy(g_szPublicIP, value_string, sizeof(g_szPublicIP));
|
g_szPublicIP = string(value_string);
|
||||||
|
SPDLOG_INFO("Setting public IP address to '{}'...", g_szPublicIP);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TOKEN("public_bind_ip")
|
TOKEN("public_bind_ip")
|
||||||
{
|
{
|
||||||
strlcpy(g_szPublicBindIP, value_string, sizeof(g_szPublicBindIP));
|
g_szPublicBindIP = string(value_string);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -716,13 +726,14 @@ void config_init(const string& st_localeServiceName)
|
|||||||
|
|
||||||
TOKEN("internal_ip")
|
TOKEN("internal_ip")
|
||||||
{
|
{
|
||||||
strlcpy(g_szInternalIP, value_string, sizeof(g_szInternalIP));
|
g_szInternalIP = string(value_string);
|
||||||
|
SPDLOG_INFO("Setting internal IP address to '{}'...", g_szInternalIP);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TOKEN("internal_bind_ip")
|
TOKEN("internal_bind_ip")
|
||||||
{
|
{
|
||||||
strlcpy(g_szInternalBindIP, value_string, sizeof(g_szInternalBindIP));
|
g_szInternalBindIP = string(value_string);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -775,19 +786,27 @@ void config_init(const string& st_localeServiceName)
|
|||||||
|
|
||||||
TOKEN("test_server")
|
TOKEN("test_server")
|
||||||
{
|
{
|
||||||
printf("-----------------------------------------------\n");
|
|
||||||
printf("TEST_SERVER\n");
|
|
||||||
printf("-----------------------------------------------\n");
|
|
||||||
str_to_number(test_server, value_string);
|
str_to_number(test_server, value_string);
|
||||||
|
|
||||||
|
if (test_server) {
|
||||||
|
printf("-----------------------------------------------\n");
|
||||||
|
printf("TEST_SERVER\n");
|
||||||
|
printf("-----------------------------------------------\n");
|
||||||
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TOKEN("speed_server")
|
TOKEN("speed_server")
|
||||||
{
|
{
|
||||||
printf("-----------------------------------------------\n");
|
|
||||||
printf("SPEED_SERVER\n");
|
|
||||||
printf("-----------------------------------------------\n");
|
|
||||||
str_to_number(speed_server, value_string);
|
str_to_number(speed_server, value_string);
|
||||||
|
|
||||||
|
if (speed_server) {
|
||||||
|
printf("-----------------------------------------------\n");
|
||||||
|
printf("SPEED_SERVER\n");
|
||||||
|
printf("-----------------------------------------------\n");
|
||||||
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#ifdef __AUCTION__
|
#ifdef __AUCTION__
|
||||||
@ -887,7 +906,11 @@ void config_init(const string& st_localeServiceName)
|
|||||||
|
|
||||||
two_arguments(value_string, szIP, sizeof(szIP), szPort, sizeof(szPort));
|
two_arguments(value_string, szIP, sizeof(szIP), szPort, sizeof(szPort));
|
||||||
|
|
||||||
if (!*szIP || (!*szPort && strcasecmp(szIP, "master")))
|
// Skip if arguments are empty
|
||||||
|
if (!*szIP)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!*szPort && strcasecmp(szIP, "master"))
|
||||||
{
|
{
|
||||||
SPDLOG_CRITICAL("AUTH_SERVER: syntax error: <ip|master> <port>");
|
SPDLOG_CRITICAL("AUTH_SERVER: syntax error: <ip|master> <port>");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
@ -949,9 +972,14 @@ void config_init(const string& st_localeServiceName)
|
|||||||
str_to_number(g_server_id, value_string);
|
str_to_number(g_server_id, value_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
TOKEN("mall_url")
|
TOKEN("web_app_url")
|
||||||
{
|
{
|
||||||
g_strWebMallURL = value_string;
|
g_strWebAppURL = value_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
TOKEN("web_app_key")
|
||||||
|
{
|
||||||
|
g_strWebAppKey = value_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
TOKEN("view_range")
|
TOKEN("view_range")
|
||||||
@ -1045,6 +1073,19 @@ void config_init(const string& st_localeServiceName)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate web app configuration
|
||||||
|
if (g_strWebAppURL.empty())
|
||||||
|
{
|
||||||
|
SPDLOG_CRITICAL("WEB_APP_URL must be configured.");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_strWebAppKey.empty())
|
||||||
|
{
|
||||||
|
SPDLOG_CRITICAL("WEB_APP_KEY must be configured.");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
// LOCALE_SERVICE
|
// LOCALE_SERVICE
|
||||||
LocaleService_LoadLocaleStringFile();
|
LocaleService_LoadLocaleStringFile();
|
||||||
LocaleService_TransferDefaultSetting();
|
LocaleService_TransferDefaultSetting();
|
||||||
|
@ -9,12 +9,12 @@ enum
|
|||||||
|
|
||||||
void config_init(const std::string& st_localeServiceName); // default "" is CONFIG
|
void config_init(const std::string& st_localeServiceName); // default "" is CONFIG
|
||||||
|
|
||||||
extern char g_szPublicBindIP[16];
|
extern std::string g_szPublicBindIP;
|
||||||
extern char g_szPublicIP[16];
|
extern std::string g_szPublicIP;
|
||||||
extern WORD mother_port;
|
extern WORD mother_port;
|
||||||
|
|
||||||
extern char g_szInternalBindIP[16];
|
extern std::string g_szInternalBindIP;
|
||||||
extern char g_szInternalIP[16];
|
extern std::string g_szInternalIP;
|
||||||
extern WORD p2p_port;
|
extern WORD p2p_port;
|
||||||
|
|
||||||
extern char db_addr[ADDRESS_MAX_LEN + 1];
|
extern char db_addr[ADDRESS_MAX_LEN + 1];
|
||||||
@ -90,7 +90,8 @@ extern int SPEEDHACK_LIMIT_BONUS;
|
|||||||
extern int g_iSyncHackLimitCount;
|
extern int g_iSyncHackLimitCount;
|
||||||
|
|
||||||
extern int g_server_id;
|
extern int g_server_id;
|
||||||
extern std::string g_strWebMallURL;
|
extern std::string g_strWebAppURL;
|
||||||
|
extern std::string g_strWebAppKey;
|
||||||
|
|
||||||
extern int VIEW_RANGE;
|
extern int VIEW_RANGE;
|
||||||
extern int VIEW_BONUS_RANGE;
|
extern int VIEW_BONUS_RANGE;
|
||||||
|
@ -158,7 +158,7 @@ void CLIENT_DESC::SetPhase(int iPhase)
|
|||||||
TPacketGDBoot p;
|
TPacketGDBoot p;
|
||||||
p.dwItemIDRange[0] = 0;
|
p.dwItemIDRange[0] = 0;
|
||||||
p.dwItemIDRange[1] = 0;
|
p.dwItemIDRange[1] = 0;
|
||||||
memcpy(p.szIP, g_szPublicIP, 16);
|
memcpy(p.szIP, g_szPublicIP.c_str(), 16);
|
||||||
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
|
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,7 +168,8 @@ void CLIENT_DESC::SetPhase(int iPhase)
|
|||||||
TPacketGDSetup p;
|
TPacketGDSetup p;
|
||||||
|
|
||||||
memset(&p, 0, sizeof(p));
|
memset(&p, 0, sizeof(p));
|
||||||
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));
|
strlcpy(p.szPublicIP, g_szPublicIP.c_str(), sizeof(p.szPublicIP));
|
||||||
|
strlcpy(p.szInternalIP, g_szInternalIP.c_str(), sizeof(p.szInternalIP));
|
||||||
|
|
||||||
if (!g_bAuthServer)
|
if (!g_bAuthServer)
|
||||||
{
|
{
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "group_text_parse_tree.h"
|
#include "group_text_parse_tree.h"
|
||||||
#include "dragon_soul_table.h"
|
#include "dragon_soul_table.h"
|
||||||
#include "item_manager.h"
|
#include "item_manager.h"
|
||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
const std::string g_astGradeName[] =
|
const std::string g_astGradeName[] =
|
||||||
{
|
{
|
||||||
"grade_normal",
|
"grade_normal",
|
||||||
@ -789,7 +789,7 @@ bool DragonSoulTable::GetRefineStrengthValues(BYTE ds_type, BYTE material_type,
|
|||||||
stDragonSoulName.c_str(), g_astMaterialName[material_type].c_str());
|
stDragonSoulName.c_str(), g_astMaterialName[material_type].c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
std::string stStrengthIdx = boost::lexical_cast <std::string> ((int)strength_idx);
|
std::string stStrengthIdx = std::to_string((int)strength_idx);
|
||||||
|
|
||||||
if (!m_pRefineStrengthTableNode->GetGroupValue(stDragonSoulName, g_astMaterialName[material_type], stStrengthIdx, prob))
|
if (!m_pRefineStrengthTableNode->GetGroupValue(stDragonSoulName, g_astMaterialName[material_type], stStrengthIdx, prob))
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ LPEVENT event_create_ex(TEVENTFUNC func, event_info_data* info, int when)
|
|||||||
#ifdef M2_USE_POOL
|
#ifdef M2_USE_POOL
|
||||||
new_event = event_pool.Construct();
|
new_event = event_pool.Construct();
|
||||||
#else
|
#else
|
||||||
new_event = M2_NEW event;
|
new_event = std::make_shared<event>();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
assert(NULL != new_event);
|
assert(NULL != new_event);
|
||||||
@ -136,7 +136,7 @@ int event_process(int pulse)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new_time = (the_event->func) (get_pointer(the_event), processing_time);
|
new_time = (the_event->func) (the_event, processing_time);
|
||||||
|
|
||||||
if (new_time <= 0 || the_event->is_force_to_end)
|
if (new_time <= 0 || the_event->is_force_to_end)
|
||||||
{
|
{
|
||||||
@ -201,17 +201,3 @@ int event_count()
|
|||||||
{
|
{
|
||||||
return cxx_q.Size();
|
return cxx_q.Size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void intrusive_ptr_add_ref(EVENT* p) {
|
|
||||||
++(p->ref_count);
|
|
||||||
}
|
|
||||||
|
|
||||||
void intrusive_ptr_release(EVENT* p) {
|
|
||||||
if ( --(p->ref_count) == 0 ) {
|
|
||||||
#ifdef M2_USE_POOL
|
|
||||||
event_pool.Destroy(p);
|
|
||||||
#else
|
|
||||||
M2_DELETE(p);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -4,10 +4,9 @@
|
|||||||
*
|
*
|
||||||
* Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
|
* Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
|
||||||
*/
|
*/
|
||||||
#ifndef __INC_LIBTHECORE_EVENT_H__
|
#pragma once
|
||||||
#define __INC_LIBTHECORE_EVENT_H__
|
|
||||||
|
|
||||||
#include <boost/intrusive_ptr.hpp>
|
#include <memory>
|
||||||
|
|
||||||
#ifdef M2_USE_POOL
|
#ifdef M2_USE_POOL
|
||||||
#include "pool.h"
|
#include "pool.h"
|
||||||
@ -34,7 +33,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef struct event EVENT;
|
typedef struct event EVENT;
|
||||||
typedef boost::intrusive_ptr<EVENT> LPEVENT;
|
typedef std::shared_ptr<EVENT> LPEVENT;
|
||||||
typedef int (*TEVENTFUNC) (LPEVENT event, int processing_time);
|
typedef int (*TEVENTFUNC) (LPEVENT event, int processing_time);
|
||||||
|
|
||||||
#define EVENTFUNC(name) int (name) (LPEVENT event, int processing_time)
|
#define EVENTFUNC(name) int (name) (LPEVENT event, int processing_time)
|
||||||
@ -63,9 +62,6 @@ struct event
|
|||||||
size_t ref_count;
|
size_t ref_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void intrusive_ptr_add_ref(EVENT* p);
|
|
||||||
extern void intrusive_ptr_release(EVENT* p);
|
|
||||||
|
|
||||||
template<class T> // T should be a subclass of event_info_data
|
template<class T> // T should be a subclass of event_info_data
|
||||||
T* AllocEventInfo() {
|
T* AllocEventInfo() {
|
||||||
#ifdef M2_USE_POOL
|
#ifdef M2_USE_POOL
|
||||||
@ -89,5 +85,3 @@ extern void event_set_verbose(int level);
|
|||||||
|
|
||||||
extern event_info_data* FindEventInfo(DWORD dwID);
|
extern event_info_data* FindEventInfo(DWORD dwID);
|
||||||
extern event_info_data* event_info(LPEVENT event);
|
extern event_info_data* event_info(LPEVENT event);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
#ifndef _FIFO_ALLOCATOR_H_
|
|
||||||
#define _FIFO_ALLOCATOR_H_
|
|
||||||
|
|
||||||
#include <deque>
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#include <tr1/unordered_map>
|
|
||||||
#define std std::tr1
|
|
||||||
#else
|
|
||||||
#include <unordered_map>
|
|
||||||
#define std boost
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Allocator implementation detail with simple FIFO grow-only pool.
|
|
||||||
// It relies on default CRT malloc/free.
|
|
||||||
class FifoAllocator {
|
|
||||||
public:
|
|
||||||
FifoAllocator() {}
|
|
||||||
~FifoAllocator() {}
|
|
||||||
|
|
||||||
void SetUp() {}
|
|
||||||
void TearDown() {
|
|
||||||
CleanUp(); // deallocate pooled blocks
|
|
||||||
}
|
|
||||||
|
|
||||||
void* Alloc(size_t size) {
|
|
||||||
void* p = NULL;
|
|
||||||
PoolType& pool = pool_map_[size];
|
|
||||||
if (pool.size() < kWatermark) {
|
|
||||||
p = ::malloc(size);
|
|
||||||
} else {
|
|
||||||
p = pool.front();
|
|
||||||
pool.pop_front();
|
|
||||||
}
|
|
||||||
if (p != NULL) {
|
|
||||||
alloc_map_[p] = size;
|
|
||||||
}
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
void Free(void* p) {
|
|
||||||
if (p == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AllocMapType::iterator it = alloc_map_.find(p);
|
|
||||||
if (it == alloc_map_.end()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
size_t size = it->second;
|
|
||||||
alloc_map_.erase(it);
|
|
||||||
PoolMapType::iterator it2 = pool_map_.find(size);
|
|
||||||
if (it2 == pool_map_.end()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PoolType& pool = it2->second;
|
|
||||||
pool.push_back(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
void CleanUp() {
|
|
||||||
PoolMapType::iterator it = pool_map_.begin(), end = pool_map_.end();
|
|
||||||
for ( ; it != end; ++it) {
|
|
||||||
PoolType& pool = it->second;
|
|
||||||
PoolType::iterator it2 = pool.begin(), end2 = pool.end();
|
|
||||||
for ( ; it2 != end2; ++it2) {
|
|
||||||
::free(*it2);
|
|
||||||
}
|
|
||||||
pool.clear();
|
|
||||||
}
|
|
||||||
pool_map_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef std::deque<void*> PoolType;
|
|
||||||
typedef std::unordered_map<size_t, PoolType> PoolMapType;
|
|
||||||
typedef std::unordered_map<void*, size_t> AllocMapType;
|
|
||||||
|
|
||||||
static const size_t kWatermark = 4; // FIFO enforcement level
|
|
||||||
|
|
||||||
PoolMapType pool_map_;
|
|
||||||
AllocMapType alloc_map_;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _FIFO_ALLOCATOR_H_
|
|
@ -618,15 +618,15 @@ void CGuild::Load(DWORD guild_id)
|
|||||||
|
|
||||||
m_data.guild_id = guild_id;
|
m_data.guild_id = guild_id;
|
||||||
|
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildData), this),
|
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildData(msg); },
|
||||||
"SELECT master, level, exp, name, skill_point, skill, sp, ladder_point, win, draw, loss, gold FROM guild%s WHERE id = %u", get_table_postfix(), m_data.guild_id);
|
"SELECT master, level, exp, name, skill_point, skill, sp, ladder_point, win, draw, loss, gold FROM guild%s WHERE id = %u", get_table_postfix(), m_data.guild_id);
|
||||||
|
|
||||||
SPDLOG_DEBUG("GUILD: loading guild id {:>12} {}", m_data.name, guild_id);
|
SPDLOG_DEBUG("GUILD: loading guild id {:>12} {}", m_data.name, guild_id);
|
||||||
|
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildGradeData), this),
|
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildGradeData(msg); },
|
||||||
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u", get_table_postfix(), m_data.guild_id);
|
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u", get_table_postfix(), m_data.guild_id);
|
||||||
|
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildMemberData), this),
|
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildMemberData(msg); },
|
||||||
"SELECT pid, grade, is_general, offer, level, job, name FROM guild_member%s, player%s WHERE guild_id = %u and pid = id", get_table_postfix(), get_table_postfix(), guild_id);
|
"SELECT pid, grade, is_general, offer, level, job, name FROM guild_member%s, player%s WHERE guild_id = %u and pid = id", get_table_postfix(), get_table_postfix(), guild_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -756,7 +756,7 @@ void CGuild::__P2PUpdateGrade(SQLMsg* pmsg)
|
|||||||
|
|
||||||
void CGuild::P2PChangeGrade(BYTE grade)
|
void CGuild::P2PChangeGrade(BYTE grade)
|
||||||
{
|
{
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::__P2PUpdateGrade),this),
|
DBManager::instance().FuncQuery([this](auto const& msg) { __P2PUpdateGrade(msg); },
|
||||||
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u and grade = %d", get_table_postfix(), m_data.guild_id, grade);
|
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u and grade = %d", get_table_postfix(), m_data.guild_id, grade);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1011,7 +1011,7 @@ void CGuild::AddComment(LPCHARACTER ch, const std::string& str)
|
|||||||
char text[GUILD_COMMENT_MAX_LEN * 2 + 1];
|
char text[GUILD_COMMENT_MAX_LEN * 2 + 1];
|
||||||
DBManager::instance().EscapeString(text, sizeof(text), str.c_str(), str.length());
|
DBManager::instance().EscapeString(text, sizeof(text), str.c_str(), str.length());
|
||||||
|
|
||||||
DBManager::instance().FuncAfterQuery(void_bind(std::bind1st(std::mem_fun(&CGuild::RefreshCommentForce),this),ch->GetPlayerID()),
|
DBManager::instance().FuncAfterQuery([this, ch]() { this->RefreshCommentForce(ch->GetPlayerID()); },
|
||||||
"INSERT INTO guild_comment%s(guild_id, name, notice, content, time) VALUES(%u, '%s', %d, '%s', NOW())",
|
"INSERT INTO guild_comment%s(guild_id, name, notice, content, time) VALUES(%u, '%s', %d, '%s', NOW())",
|
||||||
get_table_postfix(), m_data.guild_id, ch->GetName(), (str[0] == '!') ? 1 : 0, text);
|
get_table_postfix(), m_data.guild_id, ch->GetName(), (str[0] == '!') ? 1 : 0, text);
|
||||||
}
|
}
|
||||||
@ -1223,7 +1223,7 @@ void CGuild::SkillLevelUp(DWORD dwVnum)
|
|||||||
break;
|
break;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun_ref(&CGuild::SendSkillInfoPacket),*this));
|
for (auto& ch : m_memberOnline) SendSkillInfoPacket(ch);
|
||||||
|
|
||||||
SPDLOG_DEBUG("Guild SkillUp: {} {} level {} type {}", GetName(), pkSk->dwVnum, m_data.abySkill[dwRealVnum], pkSk->dwType);
|
SPDLOG_DEBUG("Guild SkillUp: {} {} level {} type {}", GetName(), pkSk->dwVnum, m_data.abySkill[dwRealVnum], pkSk->dwType);
|
||||||
}
|
}
|
||||||
@ -1482,7 +1482,7 @@ void CGuild::GuildPointChange(BYTE type, int amount, bool save)
|
|||||||
SaveSkill();
|
SaveSkill();
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun_ref(&CGuild::SendSkillInfoPacket),*this));
|
for (auto& ch : m_memberOnline) SendSkillInfoPacket(ch);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case POINT_EXP:
|
case POINT_EXP:
|
||||||
@ -1513,7 +1513,7 @@ void CGuild::GuildPointChange(BYTE type, int amount, bool save)
|
|||||||
ChangeLadderPoint(GUILD_LADDER_POINT_PER_LEVEL);
|
ChangeLadderPoint(GUILD_LADDER_POINT_PER_LEVEL);
|
||||||
|
|
||||||
// NOTIFY_GUILD_EXP_CHANGE
|
// NOTIFY_GUILD_EXP_CHANGE
|
||||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun(&CGuild::SendGuildInfoPacket), this));
|
for (auto& ch : m_memberOnline) SendGuildInfoPacket(ch);
|
||||||
// END_OF_NOTIFY_GUILD_EXP_CHANGE
|
// END_OF_NOTIFY_GUILD_EXP_CHANGE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ int CGuildManager::GetRank(CGuild* g)
|
|||||||
return rank;
|
return rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct FGuildCompare : public std::binary_function<CGuild*, CGuild*, bool>
|
struct FGuildCompare
|
||||||
{
|
{
|
||||||
bool operator () (CGuild* g1, CGuild* g2) const
|
bool operator () (CGuild* g1, CGuild* g2) const
|
||||||
{
|
{
|
||||||
@ -942,16 +942,13 @@ std::vector<CGuildWarReserveForGame *> & CGuildManager::GetReserveWarRef()
|
|||||||
|
|
||||||
void CGuildManager::ChangeMaster(DWORD dwGID)
|
void CGuildManager::ChangeMaster(DWORD dwGID)
|
||||||
{
|
{
|
||||||
TGuildMap::iterator iter = m_mapGuild.find(dwGID);
|
auto iter = m_mapGuild.find(dwGID);
|
||||||
|
|
||||||
if ( iter != m_mapGuild.end() )
|
if (iter != m_mapGuild.end())
|
||||||
{
|
|
||||||
iter->second->Load(dwGID);
|
iter->second->Load(dwGID);
|
||||||
}
|
|
||||||
|
|
||||||
// 업데이트된 정보 보내주기
|
// 업데이트된 정보 보내주기
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::SendGuildDataUpdateToAllMember), iter->second),
|
DBManager::instance().FuncQuery([iter](auto const& msg) { iter->second->SendGuildDataUpdateToAllMember(msg); },
|
||||||
"SELECT 1");
|
"SELECT 1");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ EVENTFUNC(horse_stamina_consume_event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hr->CheckHorseHealthDropTime();
|
hr->CheckHorseHealthDropTime();
|
||||||
SPDLOG_DEBUG("HORSE STAMINA - {}", (void*) get_pointer(event));
|
SPDLOG_DEBUG("HORSE STAMINA - {}", (void*) event.get());
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ EVENTFUNC(horse_stamina_regen_event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hr->CheckHorseHealthDropTime();
|
hr->CheckHorseHealthDropTime();
|
||||||
SPDLOG_DEBUG("HORSE STAMINA + {}", (void*) get_pointer(event));
|
SPDLOG_DEBUG("HORSE STAMINA + {}", (void*) event.get());
|
||||||
|
|
||||||
|
|
||||||
return delta;
|
return delta;
|
||||||
@ -292,7 +292,7 @@ void CHorseRider::StartStaminaConsumeEvent()
|
|||||||
if (GetHorseHealth() <= 0)
|
if (GetHorseHealth() <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SPDLOG_DEBUG("HORSE STAMINA REGEN EVENT CANCEL {}", (void*) get_pointer(m_eventStaminaRegen));
|
SPDLOG_DEBUG("HORSE STAMINA REGEN EVENT CANCEL {}", (void*) m_eventStaminaRegen.get());
|
||||||
event_cancel(&m_eventStaminaRegen);
|
event_cancel(&m_eventStaminaRegen);
|
||||||
|
|
||||||
if (m_eventStaminaConsume)
|
if (m_eventStaminaConsume)
|
||||||
@ -302,7 +302,7 @@ void CHorseRider::StartStaminaConsumeEvent()
|
|||||||
|
|
||||||
info->hr = this;
|
info->hr = this;
|
||||||
m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL));
|
m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL));
|
||||||
SPDLOG_DEBUG("HORSE STAMINA CONSUME EVENT CREATE {}", (void*) get_pointer(m_eventStaminaConsume));
|
SPDLOG_DEBUG("HORSE STAMINA CONSUME EVENT CREATE {}", (void*) m_eventStaminaConsume.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHorseRider::StartStaminaRegenEvent()
|
void CHorseRider::StartStaminaRegenEvent()
|
||||||
@ -313,7 +313,7 @@ void CHorseRider::StartStaminaRegenEvent()
|
|||||||
if (GetHorseHealth() <= 0)
|
if (GetHorseHealth() <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SPDLOG_DEBUG("HORSE STAMINA CONSUME EVENT CANCEL {}", (void*) get_pointer(m_eventStaminaConsume));
|
SPDLOG_DEBUG("HORSE STAMINA CONSUME EVENT CANCEL {}", (void*) m_eventStaminaConsume.get());
|
||||||
event_cancel(&m_eventStaminaConsume);
|
event_cancel(&m_eventStaminaConsume);
|
||||||
|
|
||||||
if (m_eventStaminaRegen)
|
if (m_eventStaminaRegen)
|
||||||
@ -323,7 +323,7 @@ void CHorseRider::StartStaminaRegenEvent()
|
|||||||
|
|
||||||
info->hr = this;
|
info->hr = this;
|
||||||
m_eventStaminaRegen = event_create(horse_stamina_regen_event, info, PASSES_PER_SEC(HORSE_STAMINA_REGEN_INTERVAL));
|
m_eventStaminaRegen = event_create(horse_stamina_regen_event, info, PASSES_PER_SEC(HORSE_STAMINA_REGEN_INTERVAL));
|
||||||
SPDLOG_DEBUG("HORSE STAMINA REGEN EVENT CREATE {}", (void*) get_pointer(m_eventStaminaRegen));
|
SPDLOG_DEBUG("HORSE STAMINA REGEN EVENT CREATE {}", (void*) m_eventStaminaRegen.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Health
|
// Health
|
||||||
@ -358,7 +358,7 @@ void CHorseRider::UpdateHorseHealth(int iHealth, bool bSend)
|
|||||||
|
|
||||||
void CHorseRider::HorseDie()
|
void CHorseRider::HorseDie()
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("HORSE DIE {} {}", (void*) get_pointer(m_eventStaminaRegen), (void*) get_pointer(m_eventStaminaConsume));
|
SPDLOG_DEBUG("HORSE DIE {} {}", (void*) m_eventStaminaRegen.get(), (void*) m_eventStaminaConsume.get());
|
||||||
UpdateHorseStamina(-m_Horse.sStamina);
|
UpdateHorseStamina(-m_Horse.sStamina);
|
||||||
event_cancel(&m_eventStaminaRegen);
|
event_cancel(&m_eventStaminaRegen);
|
||||||
event_cancel(&m_eventStaminaConsume);
|
event_cancel(&m_eventStaminaConsume);
|
||||||
|
@ -1304,13 +1304,13 @@ void CInputDB::P2P(const char * c_pData)
|
|||||||
extern event_base* ev_base;
|
extern event_base* ev_base;
|
||||||
extern evdns_base* dns_base;
|
extern evdns_base* dns_base;
|
||||||
|
|
||||||
TPacketDGP2P * p = (TPacketDGP2P *) c_pData;
|
auto * p = (TPacketDGP2P *) c_pData;
|
||||||
|
|
||||||
P2P_MANAGER& mgr = P2P_MANAGER::instance();
|
P2P_MANAGER& mgr = P2P_MANAGER::instance();
|
||||||
|
|
||||||
if (false == DESC_MANAGER::instance().IsP2PDescExist(p->szHost, p->wPort))
|
if (!DESC_MANAGER::instance().IsP2PDescExist(p->szHost, p->wPort))
|
||||||
{
|
{
|
||||||
LPCLIENT_DESC pkDesc = NULL;
|
LPCLIENT_DESC pkDesc = nullptr;
|
||||||
SPDLOG_DEBUG("InputDB:P2P {}:{}", p->szHost, p->wPort);
|
SPDLOG_DEBUG("InputDB:P2P {}:{}", p->szHost, p->wPort);
|
||||||
pkDesc = DESC_MANAGER::instance().CreateConnectionDesc(ev_base, dns_base, p->szHost, p->wPort, PHASE_P2P, false);
|
pkDesc = DESC_MANAGER::instance().CreateConnectionDesc(ev_base, dns_base, p->szHost, p->wPort, PHASE_P2P, false);
|
||||||
mgr.RegisterConnector(pkDesc);
|
mgr.RegisterConnector(pkDesc);
|
||||||
@ -1682,7 +1682,7 @@ void CInputDB::ReloadProto(const char * c_pData)
|
|||||||
|
|
||||||
CMotionManager::instance().Build();
|
CMotionManager::instance().Build();
|
||||||
|
|
||||||
CHARACTER_MANAGER::instance().for_each_pc(std::mem_fun(&CHARACTER::ComputePoints));
|
CHARACTER_MANAGER::instance().for_each_pc([](auto& pc) { pc->ComputePoints(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputDB::GuildSkillUsableChange(const char* c_pData)
|
void CInputDB::GuildSkillUsableChange(const char* c_pData)
|
||||||
|
@ -49,7 +49,7 @@ void LogManager::ItemLog(DWORD dwPID, DWORD x, DWORD y, DWORD dwItemID, const ch
|
|||||||
{
|
{
|
||||||
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));
|
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));
|
||||||
|
|
||||||
Query("INSERT DELAYED INTO log%s (type, time, who, x, y, what, how, hint, ip, vnum) VALUES('ITEM', NOW(), %u, %u, %u, %u, '%s', '%s', '%s', %u)",
|
Query("INSERT INTO log%s (type, time, who, x, y, what, how, hint, ip, vnum) VALUES('ITEM', NOW(), %u, %u, %u, %u, '%s', '%s', '%s', %u)",
|
||||||
get_table_postfix(), dwPID, x, y, dwItemID, c_pszText, __escape_hint, c_pszIP, dwVnum);
|
get_table_postfix(), dwPID, x, y, dwItemID, c_pszText, __escape_hint, c_pszIP, dwVnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ void LogManager::CharLog(DWORD dwPID, DWORD x, DWORD y, DWORD dwValue, const cha
|
|||||||
{
|
{
|
||||||
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));
|
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));
|
||||||
|
|
||||||
Query("INSERT DELAYED INTO log%s (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), %u, %u, %u, %u, '%s', '%s', '%s')",
|
Query("INSERT INTO log%s (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), %u, %u, %u, %u, '%s', '%s', '%s')",
|
||||||
get_table_postfix(), dwPID, x, y, dwValue, c_pszText, __escape_hint, c_pszIP);
|
get_table_postfix(), dwPID, x, y, dwValue, c_pszText, __escape_hint, c_pszIP);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ void LogManager::CharLog(LPCHARACTER ch, DWORD dw, const char * c_pszText, const
|
|||||||
|
|
||||||
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
|
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
|
||||||
{
|
{
|
||||||
Query("INSERT DELAYED INTO loginlog%s (type, time, channel, account_id, pid, level, job, playtime) VALUES (%s, NOW(), %d, %u, %u, %d, %d, %u)",
|
Query("INSERT INTO loginlog%s (type, time, channel, account_id, pid, level, job, playtime) VALUES (%s, NOW(), %d, %u, %u, %d, %d, %u)",
|
||||||
get_table_postfix(), isLogin ? "'LOGIN'" : "'LOGOUT'", g_bChannel, dwAccountID, dwPID, bLevel, bJob, dwPlayTime);
|
get_table_postfix(), isLogin ? "'LOGIN'" : "'LOGOUT'", g_bChannel, dwAccountID, dwPID, bLevel, bJob, dwPlayTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ void LogManager::MoneyLog(BYTE type, DWORD vnum, int gold)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Query("INSERT DELAYED INTO money_log%s VALUES (NOW(), %d, %d, %d)", get_table_postfix(), type, vnum, gold);
|
Query("INSERT INTO money_log%s VALUES (NOW(), %d, %d, %d)", get_table_postfix(), type, vnum, gold);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogManager::HackLog(const char * c_pszHackName, const char * c_pszLogin, const char * c_pszName, const char * c_pszIP)
|
void LogManager::HackLog(const char * c_pszHackName, const char * c_pszLogin, const char * c_pszName, const char * c_pszIP)
|
||||||
@ -167,13 +167,13 @@ void LogManager::GoldBarLog(DWORD dwPID, DWORD dwItemID, GOLDBAR_HOW eHow, const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Query("INSERT DELAYED INTO goldlog%s (date, time, pid, what, how, hint) VALUES(CURDATE(), CURTIME(), %u, %u, %s, '%s')",
|
Query("INSERT INTO goldlog%s (date, time, pid, what, how, hint) VALUES(CURDATE(), CURTIME(), %u, %u, %s, '%s')",
|
||||||
get_table_postfix(), dwPID, dwItemID, szHow, c_pszHint);
|
get_table_postfix(), dwPID, dwItemID, szHow, c_pszHint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogManager::CubeLog(DWORD dwPID, DWORD x, DWORD y, DWORD item_vnum, DWORD item_uid, int item_count, bool success)
|
void LogManager::CubeLog(DWORD dwPID, DWORD x, DWORD y, DWORD item_vnum, DWORD item_uid, int item_count, bool success)
|
||||||
{
|
{
|
||||||
Query("INSERT DELAYED INTO cube%s (pid, time, x, y, item_vnum, item_uid, item_count, success) "
|
Query("INSERT INTO cube%s (pid, time, x, y, item_vnum, item_uid, item_count, success) "
|
||||||
"VALUES(%u, NOW(), %u, %u, %u, %u, %d, %d)",
|
"VALUES(%u, NOW(), %u, %u, %u, %u, %d, %d)",
|
||||||
get_table_postfix(), dwPID, x, y, item_vnum, item_uid, item_count, success?1:0);
|
get_table_postfix(), dwPID, x, y, item_vnum, item_uid, item_count, success?1:0);
|
||||||
}
|
}
|
||||||
@ -187,7 +187,7 @@ void LogManager::SpeedHackLog(DWORD pid, DWORD x, DWORD y, int hack_count)
|
|||||||
|
|
||||||
void LogManager::ChangeNameLog(DWORD pid, const char *old_name, const char *new_name, const char *ip)
|
void LogManager::ChangeNameLog(DWORD pid, const char *old_name, const char *new_name, const char *ip)
|
||||||
{
|
{
|
||||||
Query("INSERT DELAYED INTO change_name%s (pid, old_name, new_name, time, ip) "
|
Query("INSERT INTO change_name%s (pid, old_name, new_name, time, ip) "
|
||||||
"VALUES(%u, '%s', '%s', NOW(), '%s') ",
|
"VALUES(%u, '%s', '%s', NOW(), '%s') ",
|
||||||
get_table_postfix(), pid, old_name, new_name, ip);
|
get_table_postfix(), pid, old_name, new_name, ip);
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ void LogManager::GMCommandLog(DWORD dwPID, const char* szName, const char* szIP,
|
|||||||
{
|
{
|
||||||
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), szCommand, strlen(szCommand));
|
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), szCommand, strlen(szCommand));
|
||||||
|
|
||||||
Query("INSERT DELAYED INTO command_log%s (userid, server, ip, port, username, command, date ) "
|
Query("INSERT INTO command_log%s (userid, server, ip, port, username, command, date ) "
|
||||||
"VALUES(%u, 999, '%s', %u, '%s', '%s', NOW()) ",
|
"VALUES(%u, 999, '%s', %u, '%s', '%s', NOW()) ",
|
||||||
get_table_postfix(), dwPID, szIP, byChannel, szName, __escape_hint);
|
get_table_postfix(), dwPID, szIP, byChannel, szName, __escape_hint);
|
||||||
}
|
}
|
||||||
|
@ -513,9 +513,9 @@ int start(int argc, char **argv)
|
|||||||
switch (ch)
|
switch (ch)
|
||||||
{
|
{
|
||||||
case 'I': // IP
|
case 'I': // IP
|
||||||
strlcpy(g_szPublicIP, optarg, sizeof(g_szPublicIP));
|
g_szPublicIP = std::string(optarg);
|
||||||
|
|
||||||
printf("IP %s\n", g_szPublicIP);
|
printf("IP %s\n", g_szPublicIP.c_str());
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -596,11 +596,11 @@ int start(int argc, char **argv)
|
|||||||
// Initialize the network stack
|
// Initialize the network stack
|
||||||
|
|
||||||
// Check if the public and internal IP addresses were configured
|
// Check if the public and internal IP addresses were configured
|
||||||
if (g_szInternalIP[0] == '0') {
|
if (g_szInternalIP.empty()) {
|
||||||
SPDLOG_CRITICAL("Public IP address could not be automatically detected. Manually set the IP and try again.");
|
SPDLOG_CRITICAL("Internal IP address could not be automatically detected. Manually set the IP and try again.");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if (g_szPublicIP[0] == '0') {
|
if (g_szPublicIP.empty()) {
|
||||||
SPDLOG_CRITICAL("Public IP address could not be automatically detected. Manually set the IP and try again.");
|
SPDLOG_CRITICAL("Public IP address could not be automatically detected. Manually set the IP and try again.");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@ -622,7 +622,7 @@ int start(int argc, char **argv)
|
|||||||
|
|
||||||
// Main TCP listener
|
// Main TCP listener
|
||||||
sin.sin_family = AF_INET;
|
sin.sin_family = AF_INET;
|
||||||
sin.sin_addr.s_addr = inet_addr(g_szPublicBindIP);
|
sin.sin_addr.s_addr = inet_addr(g_szPublicBindIP.c_str());
|
||||||
sin.sin_port = htons(mother_port);
|
sin.sin_port = htons(mother_port);
|
||||||
|
|
||||||
tcp_listener = evconnlistener_new_bind(
|
tcp_listener = evconnlistener_new_bind(
|
||||||
@ -640,7 +640,7 @@ int start(int argc, char **argv)
|
|||||||
|
|
||||||
// Game P2P listener
|
// Game P2P listener
|
||||||
sin.sin_family = AF_INET;
|
sin.sin_family = AF_INET;
|
||||||
sin.sin_addr.s_addr = inet_addr(g_szInternalBindIP);
|
sin.sin_addr.s_addr = inet_addr(g_szInternalBindIP.c_str());
|
||||||
sin.sin_port = htons(p2p_port);
|
sin.sin_port = htons(p2p_port);
|
||||||
|
|
||||||
p2p_listener = evconnlistener_new_bind(
|
p2p_listener = evconnlistener_new_bind(
|
||||||
@ -711,12 +711,12 @@ void destroy()
|
|||||||
|
|
||||||
if (p2p_listener) {
|
if (p2p_listener) {
|
||||||
evconnlistener_free(p2p_listener);
|
evconnlistener_free(p2p_listener);
|
||||||
tcp_listener = nullptr;
|
p2p_listener = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dns_base) {
|
if (dns_base) {
|
||||||
evdns_base_free(dns_base, 0);
|
evdns_base_free(dns_base, 0);
|
||||||
ev_base = nullptr;
|
dns_base = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ev_base) {
|
if (ev_base) {
|
||||||
|
@ -43,7 +43,7 @@ void MessengerManager::Login(MessengerManager::keyA account)
|
|||||||
if (m_set_loginAccount.find(account) != m_set_loginAccount.end())
|
if (m_set_loginAccount.find(account) != m_set_loginAccount.end())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
|
DBManager::instance().FuncQuery([this](auto const& msg) { LoadList(msg); },
|
||||||
"SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), account.c_str());
|
"SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), account.c_str());
|
||||||
|
|
||||||
m_set_loginAccount.insert(account);
|
m_set_loginAccount.insert(account);
|
||||||
|
@ -109,7 +109,7 @@ bool CMobManager::Initialize(TMobTable * pTable, int iSize)
|
|||||||
// END_OF_LOCALE_SERVICE
|
// END_OF_LOCALE_SERVICE
|
||||||
|
|
||||||
//exit(EXIT_FAILURE);
|
//exit(EXIT_FAILURE);
|
||||||
CHARACTER_MANAGER::instance().for_each_pc(std::bind1st(std::mem_fun(&CMobManager::RebindMobProto),this));
|
CHARACTER_MANAGER::instance().for_each_pc([this](auto& pc) { RebindMobProto(pc); });
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1676,7 +1676,7 @@ namespace quest
|
|||||||
|
|
||||||
void CQuestManager::AddServerTimer(const std::string& name, DWORD arg, LPEVENT event)
|
void CQuestManager::AddServerTimer(const std::string& name, DWORD arg, LPEVENT event)
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("XXX AddServerTimer {} {} {}", name, arg, (void*) get_pointer(event));
|
SPDLOG_DEBUG("XXX AddServerTimer {} {} {}", name, arg, (void*) event.get());
|
||||||
if (m_mapServerTimer.find(make_pair(name, arg)) != m_mapServerTimer.end())
|
if (m_mapServerTimer.find(make_pair(name, arg)) != m_mapServerTimer.end())
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("already registered server timer name:{} arg:{}", name, arg);
|
SPDLOG_ERROR("already registered server timer name:{} arg:{}", name, arg);
|
||||||
|
@ -165,7 +165,7 @@ namespace quest
|
|||||||
{
|
{
|
||||||
RemoveTimer(name);
|
RemoveTimer(name);
|
||||||
m_TimerMap.insert(make_pair(name, pEvent));
|
m_TimerMap.insert(make_pair(name, pEvent));
|
||||||
SPDLOG_DEBUG("QUEST add timer {} {}", (void*) get_pointer(pEvent), m_TimerMap.size());
|
SPDLOG_DEBUG("QUEST add timer {} {}", (void*) pEvent.get(), m_TimerMap.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PC::RemoveTimerNotCancel(const string & name)
|
void PC::RemoveTimerNotCancel(const string & name)
|
||||||
@ -174,7 +174,7 @@ namespace quest
|
|||||||
|
|
||||||
if (it != m_TimerMap.end())
|
if (it != m_TimerMap.end())
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("QUEST remove with no cancel {}", (void*) get_pointer(it->second));
|
SPDLOG_DEBUG("QUEST remove with no cancel {}", (void*) it->second.get());
|
||||||
m_TimerMap.erase(it);
|
m_TimerMap.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,7 +187,7 @@ namespace quest
|
|||||||
|
|
||||||
if (it != m_TimerMap.end())
|
if (it != m_TimerMap.end())
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("QUEST remove timer {}", (void*) get_pointer(it->second));
|
SPDLOG_DEBUG("QUEST remove timer {}", (void*) it->second.get());
|
||||||
CancelTimerEvent(&it->second);
|
CancelTimerEvent(&it->second);
|
||||||
m_TimerMap.erase(it);
|
m_TimerMap.erase(it);
|
||||||
}
|
}
|
||||||
|
@ -2,29 +2,23 @@
|
|||||||
#include "../../libgame/include/grid.h"
|
#include "../../libgame/include/grid.h"
|
||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "config.h"
|
|
||||||
#include "shop.h"
|
#include "shop.h"
|
||||||
#include "desc.h"
|
#include "desc.h"
|
||||||
#include "desc_manager.h"
|
|
||||||
#include "char.h"
|
#include "char.h"
|
||||||
#include "char_manager.h"
|
#include "char_manager.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "item_manager.h"
|
#include "item_manager.h"
|
||||||
#include "buffer_manager.h"
|
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "log.h"
|
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include "questmanager.h"
|
#include "questmanager.h"
|
||||||
#include "monarch.h"
|
#include "monarch.h"
|
||||||
#include "mob_manager.h"
|
#include "mob_manager.h"
|
||||||
#include "locale_service.h"
|
#include "locale_service.h"
|
||||||
#include "desc_client.h"
|
|
||||||
#include "shop_manager.h"
|
#include "shop_manager.h"
|
||||||
#include "group_text_parse_tree.h"
|
#include "group_text_parse_tree.h"
|
||||||
#include "shopEx.h"
|
#include "shopEx.h"
|
||||||
#include <boost/algorithm/string/predicate.hpp>
|
|
||||||
#include "shop_manager.h"
|
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
CShopManager::CShopManager()
|
CShopManager::CShopManager()
|
||||||
{
|
{
|
||||||
@ -388,11 +382,11 @@ bool ConvertToShopItemTable(IN CGroupNode* pNode, OUT TShopTableEx& shopTable)
|
|||||||
stCoinType = "Gold";
|
stCoinType = "Gold";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (boost::iequals(stCoinType, "Gold"))
|
if (iequals(stCoinType, "Gold"))
|
||||||
{
|
{
|
||||||
shopTable.coinType = SHOP_COIN_TYPE_GOLD;
|
shopTable.coinType = SHOP_COIN_TYPE_GOLD;
|
||||||
}
|
}
|
||||||
else if (boost::iequals(stCoinType, "SecondaryCoin"))
|
else if (iequals(stCoinType, "SecondaryCoin"))
|
||||||
{
|
{
|
||||||
shopTable.coinType = SHOP_COIN_TYPE_SECONDARY_COIN;
|
shopTable.coinType = SHOP_COIN_TYPE_SECONDARY_COIN;
|
||||||
}
|
}
|
||||||
@ -442,11 +436,11 @@ bool ConvertToShopItemTable(IN CGroupNode* pNode, OUT TShopTableEx& shopTable)
|
|||||||
stSort = "None";
|
stSort = "None";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (boost::iequals(stSort, "Asc"))
|
if (iequals(stSort, "Asc"))
|
||||||
{
|
{
|
||||||
std::sort(shopItems.begin(), shopItems.end(), CompareShopItemName);
|
std::sort(shopItems.begin(), shopItems.end(), CompareShopItemName);
|
||||||
}
|
}
|
||||||
else if(boost::iequals(stSort, "Desc"))
|
else if (iequals(stSort, "Desc"))
|
||||||
{
|
{
|
||||||
std::sort(shopItems.rbegin(), shopItems.rend(), CompareShopItemName);
|
std::sort(shopItems.rbegin(), shopItems.rend(), CompareShopItemName);
|
||||||
}
|
}
|
||||||
|
@ -230,3 +230,12 @@ bool WildCaseCmp(const char *w, const char *s)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ichar_equals(char a, char b)
|
||||||
|
{
|
||||||
|
return std::tolower(static_cast<unsigned char>(a)) == std::tolower(static_cast<unsigned char>(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool iequals(const std::string& a, const std::string& b)
|
||||||
|
{
|
||||||
|
return std::equal(a.begin(), a.end(), b.begin(), b.end(), ichar_equals);
|
||||||
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
#ifndef __INC_METIN_II_UTILS_H__
|
#include <cmath>
|
||||||
#define __INC_METIN_II_UTILS_H__
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
#define IS_SET(flag, bit) ((flag) & (bit))
|
#define IS_SET(flag, bit) ((flag) & (bit))
|
||||||
#define SET_BIT(var, bit) ((var) |= (bit))
|
#define SET_BIT(var, bit) ((var) |= (bit))
|
||||||
@ -64,5 +62,5 @@ extern int parse_time_str(const char* str);
|
|||||||
|
|
||||||
extern bool WildCaseCmp(const char *w, const char *s);
|
extern bool WildCaseCmp(const char *w, const char *s);
|
||||||
|
|
||||||
#endif /* __INC_METIN_II_UTILS_H__ */
|
extern bool ichar_equals(char a, char b);
|
||||||
|
extern bool iequals(const std::string& a, const std::string& b);
|
||||||
|
@ -68,7 +68,7 @@ namespace marriage
|
|||||||
{
|
{
|
||||||
if (m_pEndEvent)
|
if (m_pEndEvent)
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("WeddingMap::SetEnded - ALREADY EndEvent(m_pEndEvent={})", (void*) get_pointer(m_pEndEvent));
|
SPDLOG_ERROR("WeddingMap::SetEnded - ALREADY EndEvent(m_pEndEvent={})", (void*) m_pEndEvent.get());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(libgame CXX)
|
project(libgame CXX)
|
||||||
|
|
||||||
@ -11,12 +11,11 @@ file(GLOB SOURCES
|
|||||||
# Include header files
|
# Include header files
|
||||||
include_directories("include")
|
include_directories("include")
|
||||||
|
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
|
|
||||||
# Create shared library
|
# Create shared library
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
||||||
|
|
||||||
if (Boost_FOUND)
|
# Find and link dependencies
|
||||||
include_directories(${Boost_INCLUDE_DIRS})
|
|
||||||
target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES})
|
# spdlog
|
||||||
endif (Boost_FOUND)
|
find_package(spdlog CONFIG REQUIRED)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(liblua CXX)
|
project(liblua CXX)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(libpoly CXX)
|
project(libpoly CXX)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(libsql CXX)
|
project(libsql CXX)
|
||||||
|
|
||||||
@ -14,10 +14,12 @@ include_directories("include")
|
|||||||
# Create shared library
|
# Create shared library
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
||||||
|
|
||||||
# Find dependencies
|
# Find and link dependencies
|
||||||
find_package(unofficial-libmysql REQUIRED)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::libmysql::libmysql)
|
|
||||||
|
|
||||||
find_package(Boost REQUIRED)
|
# MariaDB
|
||||||
include_directories(${Boost_INCLUDE_DIRS})
|
find_package(unofficial-libmariadb REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES})
|
target_link_libraries(${PROJECT_NAME} PUBLIC unofficial::libmariadb)
|
||||||
|
|
||||||
|
# spdlog
|
||||||
|
find_package(spdlog CONFIG REQUIRED)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog)
|
||||||
|
@ -132,6 +132,14 @@ bool CAsyncSQL::Connect()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable MYSQL_OPT_SSL_VERIFY_SERVER_CERT (enabled by default in libmariadb >=3.4)
|
||||||
|
bool verifyServerCert = false;
|
||||||
|
if (mysql_options(&m_hDB, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &verifyServerCert) != 0)
|
||||||
|
{
|
||||||
|
SPDLOG_ERROR("Disabling MYSQL_OPT_SSL_VERIFY_SERVER_CERT failed: {}", mysql_error(&m_hDB));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!mysql_real_connect(&m_hDB, m_stHost.c_str(), m_stUser.c_str(), m_stPassword.c_str(), m_stDB.c_str(), m_iPort, NULL, CLIENT_MULTI_STATEMENTS))
|
if (!mysql_real_connect(&m_hDB, m_stHost.c_str(), m_stUser.c_str(), m_stPassword.c_str(), m_stDB.c_str(), m_iPort, NULL, CLIENT_MULTI_STATEMENTS))
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("MySQL connection failed: {}", mysql_error(&m_hDB));
|
SPDLOG_ERROR("MySQL connection failed: {}", mysql_error(&m_hDB));
|
||||||
@ -143,7 +151,7 @@ bool CAsyncSQL::Connect()
|
|||||||
if (0 != mysql_options(&m_hDB, MYSQL_OPT_RECONNECT, &reconnect))
|
if (0 != mysql_options(&m_hDB, MYSQL_OPT_RECONNECT, &reconnect))
|
||||||
SPDLOG_ERROR("Setting MYSQL_OPT_RECONNECT via mysql_options failed: {}", mysql_error(&m_hDB));
|
SPDLOG_ERROR("Setting MYSQL_OPT_RECONNECT via mysql_options failed: {}", mysql_error(&m_hDB));
|
||||||
|
|
||||||
SPDLOG_INFO("AsyncSQL: connected to {} (reconnect {})", m_stHost, m_hDB.reconnect);
|
SPDLOG_INFO("AsyncSQL: connected to {}", m_stHost);
|
||||||
|
|
||||||
// db cache는 common db의 LOCALE 테이블에서 locale을 알아오고, 이후 character set을 수정한다.
|
// db cache는 common db의 LOCALE 테이블에서 locale을 알아오고, 이후 character set을 수정한다.
|
||||||
// 따라서 최초 Connection을 맺을 때에는 locale을 모르기 때문에 character set을 정할 수가 없음에도 불구하고,
|
// 따라서 최초 Connection을 맺을 때에는 locale을 모르기 때문에 character set을 정할 수가 없음에도 불구하고,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(libthecore CXX)
|
project(libthecore CXX)
|
||||||
|
|
||||||
@ -14,14 +14,7 @@ include_directories("include")
|
|||||||
# Create shared library
|
# Create shared library
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
||||||
|
|
||||||
#
|
# Find and link dependencies
|
||||||
# vcpkg dependencies
|
|
||||||
#
|
|
||||||
|
|
||||||
# Boost
|
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
include_directories(${Boost_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES})
|
|
||||||
|
|
||||||
# fmt
|
# fmt
|
||||||
find_package(fmt CONFIG REQUIRED)
|
find_package(fmt CONFIG REQUIRED)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
project(quest CXX)
|
project(quest CXX)
|
||||||
|
|
||||||
@ -7,19 +7,13 @@ file(GLOB_RECURSE sources
|
|||||||
src/*.c
|
src/*.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Add the src directory to the include path
|
||||||
include_directories(src)
|
include_directories(src)
|
||||||
|
|
||||||
# Find dependencies
|
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${sources})
|
add_executable(${PROJECT_NAME} ${sources})
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qc")
|
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qc")
|
||||||
|
|
||||||
# Link dependencies if found
|
# Find and link dependencies
|
||||||
if (Boost_FOUND)
|
|
||||||
include_directories(${Boost_INCLUDE_DIRS})
|
|
||||||
target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES})
|
|
||||||
endif (Boost_FOUND)
|
|
||||||
|
|
||||||
|
# liblua
|
||||||
target_link_libraries(${PROJECT_NAME} liblua)
|
target_link_libraries(${PROJECT_NAME} liblua)
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC . ../liblua)
|
|
@ -20,18 +20,9 @@ extern "C" {
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#ifndef __WIN32__
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#else
|
|
||||||
#include <boost/typeof/typeof.hpp>
|
|
||||||
#define typeof(t) BOOST_TYPEOF(t)
|
|
||||||
#include <direct.h>
|
|
||||||
#define mkdir(path, mode) _mkdir(path)
|
|
||||||
#endif
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <errno.h>
|
#include <cerrno>
|
||||||
|
|
||||||
#include "crc32.h"
|
#include "crc32.h"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user