forked from metin2/server
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
7ee9c84bd3 | |||
ca06bcc611 | |||
610c7e7020 | |||
5665bde225 | |||
6b3a6caee4 | |||
7b39087fa7 | |||
a2f20a0395 | |||
db4542dd7a | |||
0f259307df | |||
db0a0fef64 | |||
671c514cb6 | |||
545aa2d6dd | |||
e921594eff |
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>
|
@ -29,7 +29,7 @@ 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 gettext python2 libdevil-dev libbsd-dev && apt-get clean
|
RUN apt-get update && apt-get install -y gettext python2 libdevil1c2 libbsd0 && 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
|
||||||
|
15
README.md
15
README.md
@ -92,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.
|
||||||
|
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;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
@ -1,219 +0,0 @@
|
|||||||
#include "stdafx.h"
|
|
||||||
#include "ClientPackageCryptInfo.h"
|
|
||||||
#include <common/stl.h>
|
|
||||||
|
|
||||||
CClientPackageCryptInfo::CClientPackageCryptInfo() : m_pSerializedCryptKeyStream(NULL), m_nCryptKeyPackageCnt(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CClientPackageCryptInfo::~CClientPackageCryptInfo()
|
|
||||||
{
|
|
||||||
m_vecPackageCryptKeys.clear();
|
|
||||||
m_mapPackageSDB.clear();
|
|
||||||
if( m_pSerializedCryptKeyStream )
|
|
||||||
{
|
|
||||||
delete[] m_pSerializedCryptKeyStream;
|
|
||||||
m_pSerializedCryptKeyStream = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CClientPackageCryptInfo::LoadPackageCryptFile( const char* pCryptFile )
|
|
||||||
{
|
|
||||||
FILE * fp = fopen(pCryptFile, "rb");
|
|
||||||
|
|
||||||
if (!fp)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int iSDBDataOffset;
|
|
||||||
fread(&iSDBDataOffset, sizeof(int), 1, fp);
|
|
||||||
|
|
||||||
int iPackageCnt;
|
|
||||||
fread( &iPackageCnt, sizeof(int), 1, fp );
|
|
||||||
m_nCryptKeyPackageCnt += iPackageCnt;
|
|
||||||
|
|
||||||
int iCryptKeySize = iSDBDataOffset - 2*sizeof(int);
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
if (0 == iCryptKeySize)
|
|
||||||
{
|
|
||||||
SPDLOG_WARN("[PackageCryptInfo] failed to load crypt key. (file: {}, key size: {})", pCryptFile, iCryptKeySize);
|
|
||||||
m_nCryptKeyPackageCnt -= iPackageCnt;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int nCurKeySize = (int)m_vecPackageCryptKeys.size();
|
|
||||||
m_vecPackageCryptKeys.resize( nCurKeySize + sizeof(int) + iCryptKeySize);
|
|
||||||
|
|
||||||
memcpy( &m_vecPackageCryptKeys[nCurKeySize], &iCryptKeySize, sizeof(int));
|
|
||||||
fread( &m_vecPackageCryptKeys[nCurKeySize + sizeof(int)], sizeof(BYTE), iCryptKeySize, fp );
|
|
||||||
SPDLOG_WARN("[PackageCryptInfo] {} loaded. (key size: {}, count: {}, total: {})", pCryptFile, iCryptKeySize, iPackageCnt, m_nCryptKeyPackageCnt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//about SDB data
|
|
||||||
//total packagecnt (4byte)
|
|
||||||
// for packagecnt
|
|
||||||
// db name hash 4byte( stl.h stringhash ) +child node size(4byte)
|
|
||||||
|
|
||||||
//stream to client
|
|
||||||
// sdb file cnt( 4byte )
|
|
||||||
// for sdb file cnt
|
|
||||||
// filename hash ( stl.h stringhash )
|
|
||||||
// related map name size(4), relate map name
|
|
||||||
// sdb block size( 1byte )
|
|
||||||
// sdb blocks
|
|
||||||
|
|
||||||
int iSDBPackageCnt;
|
|
||||||
fread(&iSDBPackageCnt, sizeof(int), 1, fp);
|
|
||||||
|
|
||||||
DWORD dwPackageNameHash, dwPackageStreamSize, dwSDBFileCnt, dwFileNameHash, dwMapNameSize;
|
|
||||||
|
|
||||||
std::string strRelatedMapName;
|
|
||||||
|
|
||||||
if (0 == iCryptKeySize && 0 == iSDBPackageCnt)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for( int i = 0; i < iSDBPackageCnt; ++i )
|
|
||||||
{
|
|
||||||
fread(&dwPackageNameHash, sizeof(DWORD), 1, fp);
|
|
||||||
fread(&dwPackageStreamSize, sizeof(DWORD), 1, fp);
|
|
||||||
|
|
||||||
fread(&dwSDBFileCnt, sizeof(DWORD), 1, fp);
|
|
||||||
|
|
||||||
SPDLOG_INFO("[PackageCryptInfo] SDB Loaded. (Name Hash : {}, Stream Size: {}, File Count: {})", dwPackageNameHash,dwPackageStreamSize, dwSDBFileCnt);
|
|
||||||
|
|
||||||
for( int j = 0; j < (int)dwSDBFileCnt; ++j )
|
|
||||||
{
|
|
||||||
fread(&dwFileNameHash, sizeof(DWORD), 1, fp);
|
|
||||||
fread(&dwMapNameSize, sizeof(DWORD), 1, fp);
|
|
||||||
|
|
||||||
strRelatedMapName.resize( dwMapNameSize );
|
|
||||||
fread(&strRelatedMapName[0], sizeof(BYTE), dwMapNameSize, fp);
|
|
||||||
|
|
||||||
SPDLOG_INFO("[PackageCryptInfo] \t SDB each file info loaded.(MapName: {}, NameHash: {})", strRelatedMapName.c_str(), dwFileNameHash);
|
|
||||||
|
|
||||||
BYTE bSDBStreamSize;
|
|
||||||
std::vector<BYTE> vecSDBStream;
|
|
||||||
fread(&bSDBStreamSize, sizeof(BYTE), 1, fp);
|
|
||||||
|
|
||||||
vecSDBStream.resize(bSDBStreamSize);
|
|
||||||
fread(&vecSDBStream[0], sizeof(BYTE), bSDBStreamSize, fp);
|
|
||||||
|
|
||||||
//reconstruct it
|
|
||||||
TPackageSDBMap::iterator it = m_mapPackageSDB.find( strRelatedMapName );
|
|
||||||
if( it == m_mapPackageSDB.end() )
|
|
||||||
{
|
|
||||||
TPerFileSDBInfo fileSDBInfo;
|
|
||||||
m_mapPackageSDB[strRelatedMapName] = fileSDBInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
TSupplementaryDataBlockInfo SDBInfo;
|
|
||||||
std::vector<TSupplementaryDataBlockInfo>& rSDBInfos = m_mapPackageSDB[strRelatedMapName].vecSDBInfos;
|
|
||||||
{
|
|
||||||
SDBInfo.dwPackageIdentifier = dwPackageNameHash;
|
|
||||||
SDBInfo.dwFileIdentifier = dwFileNameHash;
|
|
||||||
SDBInfo.vecSDBStream.resize( bSDBStreamSize );
|
|
||||||
|
|
||||||
memcpy(&SDBInfo.vecSDBStream[0], &vecSDBStream[0], bSDBStreamSize );
|
|
||||||
|
|
||||||
rSDBInfos.push_back( SDBInfo );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool CClientPackageCryptInfo::LoadPackageCryptInfo( const char* pCryptInfoDir )
|
|
||||||
{
|
|
||||||
DIR * pDir = opendir(pCryptInfoDir);
|
|
||||||
|
|
||||||
if (!pDir)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
m_nCryptKeyPackageCnt = 0;
|
|
||||||
if( m_pSerializedCryptKeyStream )
|
|
||||||
{
|
|
||||||
delete[] m_pSerializedCryptKeyStream;
|
|
||||||
m_pSerializedCryptKeyStream = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_mapPackageSDB.clear();
|
|
||||||
m_vecPackageCryptKeys.clear();
|
|
||||||
|
|
||||||
const char szPrefixCryptInfoFile[] = "cshybridcrypt";
|
|
||||||
|
|
||||||
dirent * pDirEnt;
|
|
||||||
while ((pDirEnt = readdir(pDir)))
|
|
||||||
{
|
|
||||||
//if (strncmp( &(pDirEnt->d_name[0]), szPrefixCryptInfoFile, strlen(szPrefixCryptInfoFile)) )
|
|
||||||
if (std::string::npos == std::string(pDirEnt->d_name).find(szPrefixCryptInfoFile))
|
|
||||||
{
|
|
||||||
SPDLOG_DEBUG("[PackageCryptInfo] {} is not crypt file. pass!", pDirEnt->d_name);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string strFullPathName = std::string(pCryptInfoDir) + std::string(pDirEnt->d_name);
|
|
||||||
|
|
||||||
SPDLOG_DEBUG("[PackageCryptInfo] Try to load crypt file: {}", strFullPathName.c_str());
|
|
||||||
|
|
||||||
if (false == LoadPackageCryptFile( strFullPathName.c_str() ))
|
|
||||||
SPDLOG_DEBUG("[PackageCryptInfo] Failed to load {}", strFullPathName.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir(pDir);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CClientPackageCryptInfo::GetPackageCryptKeys( BYTE** ppData, int& iDataSize )
|
|
||||||
{
|
|
||||||
int nCryptKeySize = m_vecPackageCryptKeys.size();
|
|
||||||
int iStreamSize = sizeof(int)+nCryptKeySize;
|
|
||||||
|
|
||||||
//NOTE : Crypt Key Info isn`t updated during runtime. ( in case of file reloading all data is cleared & recreated )
|
|
||||||
//it`s not safe but due to performance benefit we don`t do re-serialize.
|
|
||||||
if( m_pSerializedCryptKeyStream )
|
|
||||||
{
|
|
||||||
*ppData = m_pSerializedCryptKeyStream;
|
|
||||||
iDataSize = iStreamSize;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( nCryptKeySize > 0 )
|
|
||||||
{
|
|
||||||
m_pSerializedCryptKeyStream = new BYTE[iStreamSize];
|
|
||||||
memcpy(&m_pSerializedCryptKeyStream[0], &m_nCryptKeyPackageCnt, sizeof(int) );
|
|
||||||
memcpy(&m_pSerializedCryptKeyStream[sizeof(int)], &m_vecPackageCryptKeys[0], nCryptKeySize );
|
|
||||||
|
|
||||||
*ppData = m_pSerializedCryptKeyStream;
|
|
||||||
iDataSize = iStreamSize;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*ppData = NULL;
|
|
||||||
iDataSize = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool CClientPackageCryptInfo::GetRelatedMapSDBStreams(const char* pMapName, BYTE** ppData, int& iDataSize )
|
|
||||||
{
|
|
||||||
std::string strLowerMapName = pMapName;
|
|
||||||
stl_lowers(strLowerMapName);
|
|
||||||
|
|
||||||
TPackageSDBMap::iterator it = m_mapPackageSDB.find( strLowerMapName.c_str() );
|
|
||||||
if( it == m_mapPackageSDB.end() || it->second.vecSDBInfos.size() == 0 )
|
|
||||||
{
|
|
||||||
SPDLOG_ERROR("GetRelatedMapSDBStreams Failed({})", strLowerMapName.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ppData = it->second.GetSerializedStream();
|
|
||||||
iDataSize = it->second.GetSize();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
#ifndef __INC_CLIENTPACKAGE_CRYPTINFO_H
|
|
||||||
#define __INC_CLIENTPACKAGE_CRYPTINFO_H
|
|
||||||
|
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct SSupplementaryDataBlockInfo
|
|
||||||
{
|
|
||||||
DWORD dwPackageIdentifier;
|
|
||||||
DWORD dwFileIdentifier;
|
|
||||||
std::vector<BYTE> vecSDBStream;
|
|
||||||
|
|
||||||
void Serialize( BYTE* pStream )
|
|
||||||
{
|
|
||||||
memcpy(pStream, &dwPackageIdentifier, sizeof(DWORD));
|
|
||||||
memcpy(pStream+4, &dwFileIdentifier, sizeof(DWORD));
|
|
||||||
|
|
||||||
BYTE bSize = vecSDBStream.size();
|
|
||||||
memcpy(pStream+8, &bSize, sizeof(BYTE));
|
|
||||||
memcpy(pStream+9, &vecSDBStream[0], bSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD GetSerializedSize() const
|
|
||||||
{
|
|
||||||
return sizeof(DWORD)*2 + sizeof(BYTE) + vecSDBStream.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
} TSupplementaryDataBlockInfo;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
class CClientPackageCryptInfo
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CClientPackageCryptInfo();
|
|
||||||
~CClientPackageCryptInfo();
|
|
||||||
|
|
||||||
bool LoadPackageCryptInfo( const char* pCryptInfoDir );
|
|
||||||
void GetPackageCryptKeys( BYTE** ppData, int& iDataSize );
|
|
||||||
|
|
||||||
bool GetRelatedMapSDBStreams(const char* pMapName, BYTE** ppData, int& iDataSize );
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool LoadPackageCryptFile( const char* pCryptFile );
|
|
||||||
|
|
||||||
private:
|
|
||||||
int m_nCryptKeyPackageCnt;
|
|
||||||
std::vector<BYTE> m_vecPackageCryptKeys;
|
|
||||||
BYTE* m_pSerializedCryptKeyStream;
|
|
||||||
|
|
||||||
typedef struct SPerFileSDBInfo
|
|
||||||
{
|
|
||||||
SPerFileSDBInfo() : m_pSerializedStream(NULL) {}
|
|
||||||
~SPerFileSDBInfo()
|
|
||||||
{
|
|
||||||
if(m_pSerializedStream)
|
|
||||||
{
|
|
||||||
delete[]m_pSerializedStream;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD GetSize() const
|
|
||||||
{
|
|
||||||
DWORD dwSize = 4; //initial vecSDBInfo count
|
|
||||||
|
|
||||||
for(int i = 0; i < (int)vecSDBInfos.size(); ++i)
|
|
||||||
{
|
|
||||||
dwSize += vecSDBInfos[i].GetSerializedSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE* GetSerializedStream()
|
|
||||||
{
|
|
||||||
//NOTE : SDB Data isn`t updated during runtime. ( in case of file reloading all data is cleared & recreated )
|
|
||||||
//it`s not safe but due to performance benefit we don`t do re-serialize.
|
|
||||||
if(m_pSerializedStream)
|
|
||||||
return m_pSerializedStream;
|
|
||||||
|
|
||||||
m_pSerializedStream = new BYTE[GetSize()];
|
|
||||||
|
|
||||||
int iWrittenOffset = 0;
|
|
||||||
int iSDBInfoSize = vecSDBInfos.size();
|
|
||||||
|
|
||||||
//write size
|
|
||||||
memcpy( m_pSerializedStream, &iSDBInfoSize, sizeof(int) );
|
|
||||||
iWrittenOffset += sizeof(int);
|
|
||||||
for(int i = 0; i < iSDBInfoSize; ++i)
|
|
||||||
{
|
|
||||||
vecSDBInfos[i].Serialize( m_pSerializedStream + iWrittenOffset );
|
|
||||||
iWrittenOffset += vecSDBInfos[i].GetSerializedSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
return m_pSerializedStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<TSupplementaryDataBlockInfo> vecSDBInfos;
|
|
||||||
|
|
||||||
private:
|
|
||||||
BYTE* m_pSerializedStream;
|
|
||||||
|
|
||||||
} TPerFileSDBInfo;
|
|
||||||
|
|
||||||
typedef std::unordered_map<std::string, TPerFileSDBInfo > TPackageSDBMap; //key: related map name
|
|
||||||
TPackageSDBMap m_mapPackageSDB;
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__INC_CLIENTPACKAGE_CRYPTINFO_H
|
|
@ -5046,24 +5046,6 @@ bool CHARACTER::WarpSet(int x, int y, int lPrivateMapIndex)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Send Supplementary Data Block if new map requires security packages in loading this map
|
|
||||||
{
|
|
||||||
LONG lCurAddr;
|
|
||||||
int lCurMapIndex = 0;
|
|
||||||
WORD wCurPort;
|
|
||||||
|
|
||||||
CMapLocation::instance().Get(GetX(), GetY(), lCurMapIndex, lCurAddr, wCurPort);
|
|
||||||
|
|
||||||
//do not send SDB files if char is in the same map
|
|
||||||
if( lCurMapIndex != lMapIndex )
|
|
||||||
{
|
|
||||||
const TMapRegion * rMapRgn = SECTREE_MANAGER::instance().GetMapRegion(lMapIndex);
|
|
||||||
{
|
|
||||||
DESC_MANAGER::instance().SendClientPackageSDBToLoadMap( GetDesc(), rMapRgn->strMapName.c_str() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lPrivateMapIndex >= 10000)
|
if (lPrivateMapIndex >= 10000)
|
||||||
{
|
{
|
||||||
if (lPrivateMapIndex / 10000 != lMapIndex)
|
if (lPrivateMapIndex / 10000 != lMapIndex)
|
||||||
|
@ -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)
|
||||||
|
@ -663,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -678,7 +678,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
|||||||
v.reserve(m_set_pkChrState.size());
|
v.reserve(m_set_pkChrState.size());
|
||||||
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>());
|
||||||
|
|
||||||
for_each(v.begin(), v.end(), bind2nd(mem_fun(&CHARACTER::UpdateStateMachine), iPulse));
|
for (auto& ch : v) ch->UpdateStateMachine(iPulse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -688,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));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
@ -263,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -355,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;
|
||||||
@ -662,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;
|
||||||
@ -699,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
@ -110,7 +110,6 @@ void DESC::Initialize()
|
|||||||
|
|
||||||
m_pkLoginKey = NULL;
|
m_pkLoginKey = NULL;
|
||||||
m_dwLoginKey = 0;
|
m_dwLoginKey = 0;
|
||||||
m_dwPanamaKey = 0;
|
|
||||||
|
|
||||||
m_bCRCMagicCubeIdx = 0;
|
m_bCRCMagicCubeIdx = 0;
|
||||||
m_dwProcCRC = 0;
|
m_dwProcCRC = 0;
|
||||||
|
@ -146,9 +146,6 @@ class DESC
|
|||||||
unsigned int GetMatrixCols();
|
unsigned int GetMatrixCols();
|
||||||
bool CheckMatrixTryCount();
|
bool CheckMatrixTryCount();
|
||||||
|
|
||||||
void SetPanamaKey(DWORD dwKey) {m_dwPanamaKey = dwKey;}
|
|
||||||
DWORD GetPanamaKey() const { return m_dwPanamaKey; }
|
|
||||||
|
|
||||||
void SetLoginKey(DWORD dwKey);
|
void SetLoginKey(DWORD dwKey);
|
||||||
void SetLoginKey(CLoginKey * pkKey);
|
void SetLoginKey(CLoginKey * pkKey);
|
||||||
DWORD GetLoginKey();
|
DWORD GetLoginKey();
|
||||||
@ -208,7 +205,6 @@ class DESC
|
|||||||
|
|
||||||
CLoginKey * m_pkLoginKey;
|
CLoginKey * m_pkLoginKey;
|
||||||
DWORD m_dwLoginKey;
|
DWORD m_dwLoginKey;
|
||||||
DWORD m_dwPanamaKey;
|
|
||||||
|
|
||||||
BYTE m_bCRCMagicCubeIdx;
|
BYTE m_bCRCMagicCubeIdx;
|
||||||
DWORD m_dwProcCRC;
|
DWORD m_dwProcCRC;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
#include "messenger_manager.h"
|
#include "messenger_manager.h"
|
||||||
#include "p2p.h"
|
#include "p2p.h"
|
||||||
#include "ClientPackageCryptInfo.h"
|
|
||||||
|
|
||||||
struct valid_ip
|
struct valid_ip
|
||||||
{
|
{
|
||||||
@ -53,15 +52,11 @@ int IsValidIP(struct valid_ip* ip_table, const char *host)
|
|||||||
DESC_MANAGER::DESC_MANAGER() : m_bDestroyed(false)
|
DESC_MANAGER::DESC_MANAGER() : m_bDestroyed(false)
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
//NOTE : Destroy 끝에서 Initialize 를 부르는건 또 무슨 짓이냐..-_-; 정말
|
|
||||||
|
|
||||||
m_pPackageCrypt = new CClientPackageCryptInfo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DESC_MANAGER::~DESC_MANAGER()
|
DESC_MANAGER::~DESC_MANAGER()
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
delete m_pPackageCrypt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DESC_MANAGER::Initialize()
|
void DESC_MANAGER::Initialize()
|
||||||
@ -479,55 +474,3 @@ void DESC_MANAGER::ProcessExpiredLoginKey()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DESC_MANAGER::LoadClientPackageCryptInfo(const char* pDirName)
|
|
||||||
{
|
|
||||||
return m_pPackageCrypt->LoadPackageCryptInfo(pDirName);
|
|
||||||
}
|
|
||||||
#ifdef __FreeBSD__
|
|
||||||
void DESC_MANAGER::NotifyClientPackageFileChanged( const std::string& dirName, eFileUpdatedOptions eUpdateOption )
|
|
||||||
{
|
|
||||||
Instance().LoadClientPackageCryptInfo(dirName.c_str());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void DESC_MANAGER::SendClientPackageCryptKey( LPDESC desc )
|
|
||||||
{
|
|
||||||
if( !desc )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TPacketGCHybridCryptKeys packet;
|
|
||||||
{
|
|
||||||
packet.bHeader = HEADER_GC_HYBRIDCRYPT_KEYS;
|
|
||||||
m_pPackageCrypt->GetPackageCryptKeys( &(packet.pDataKeyStream), packet.KeyStreamLen );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( packet.KeyStreamLen > 0 )
|
|
||||||
{
|
|
||||||
desc->Packet( packet.GetStreamData(), packet.GetStreamSize() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DESC_MANAGER::SendClientPackageSDBToLoadMap( LPDESC desc, const char* pMapName )
|
|
||||||
{
|
|
||||||
if( !desc )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TPacketGCPackageSDB packet;
|
|
||||||
{
|
|
||||||
packet.bHeader = HEADER_GC_HYBRIDCRYPT_SDB;
|
|
||||||
if( !m_pPackageCrypt->GetRelatedMapSDBStreams( pMapName, &(packet.m_pDataSDBStream), packet.iStreamLen ) )
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( packet.iStreamLen > 0 )
|
|
||||||
{
|
|
||||||
desc->Packet( packet.GetStreamData(), packet.GetStreamSize());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <event2/listener.h>
|
#include <event2/listener.h>
|
||||||
|
|
||||||
class CLoginKey;
|
class CLoginKey;
|
||||||
class CClientPackageCryptInfo;
|
|
||||||
|
|
||||||
class DESC_MANAGER : public singleton<DESC_MANAGER>
|
class DESC_MANAGER : public singleton<DESC_MANAGER>
|
||||||
{
|
{
|
||||||
@ -69,14 +68,6 @@ class DESC_MANAGER : public singleton<DESC_MANAGER>
|
|||||||
|
|
||||||
bool IsP2PDescExist(const char * szHost, WORD wPort);
|
bool IsP2PDescExist(const char * szHost, WORD wPort);
|
||||||
|
|
||||||
// for C/S hybrid crypt
|
|
||||||
bool LoadClientPackageCryptInfo(const char* pDirName);
|
|
||||||
void SendClientPackageCryptKey( LPDESC desc );
|
|
||||||
void SendClientPackageSDBToLoadMap( LPDESC desc, const char* pMapName );
|
|
||||||
#ifdef __FreeBSD__
|
|
||||||
static void NotifyClientPackageFileChanged( const std::string& fileName, eFileUpdatedOptions eUpdateOption );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_bDisconnectInvalidCRC;
|
bool m_bDisconnectInvalidCRC;
|
||||||
|
|
||||||
@ -99,8 +90,6 @@ class DESC_MANAGER : public singleton<DESC_MANAGER>
|
|||||||
int m_aiEmpireUserCount[EMPIRE_MAX_NUM];
|
int m_aiEmpireUserCount[EMPIRE_MAX_NUM];
|
||||||
|
|
||||||
bool m_bDestroyed;
|
bool m_bDestroyed;
|
||||||
|
|
||||||
CClientPackageCryptInfo* m_pPackageCrypt;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -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");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,10 +82,8 @@ void CInputAuth::Login(LPDESC d, const char * c_pData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
DWORD dwKey = DESC_MANAGER::instance().CreateLoginKey(d);
|
DWORD dwKey = DESC_MANAGER::instance().CreateLoginKey(d);
|
||||||
DWORD dwPanamaKey = dwKey ^ pinfo->adwClientKey[0] ^ pinfo->adwClientKey[1] ^ pinfo->adwClientKey[2] ^ pinfo->adwClientKey[3];
|
|
||||||
d->SetPanamaKey(dwPanamaKey);
|
|
||||||
|
|
||||||
SPDLOG_DEBUG("InputAuth::Login : key {}:{} login {}", dwKey, dwPanamaKey, login);
|
SPDLOG_DEBUG("InputAuth::Login : key {} login {}", dwKey, login);
|
||||||
|
|
||||||
TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3;
|
TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3;
|
||||||
memcpy(p, pinfo, sizeof(TPacketCGLogin3));
|
memcpy(p, pinfo, sizeof(TPacketCGLogin3));
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
|
|
||||||
#include "horsename_manager.h"
|
#include "horsename_manager.h"
|
||||||
#include "gm.h"
|
#include "gm.h"
|
||||||
#include "panama.h"
|
|
||||||
#include "map_location.h"
|
#include "map_location.h"
|
||||||
|
|
||||||
#include "DragonSoul.h"
|
#include "DragonSoul.h"
|
||||||
@ -418,14 +417,6 @@ void CInputDB::PlayerLoad(LPDESC d, const char * data)
|
|||||||
ch->MainCharacterPacket();
|
ch->MainCharacterPacket();
|
||||||
|
|
||||||
int lPublicMapIndex = lMapIndex >= 10000 ? lMapIndex / 10000 : lMapIndex;
|
int lPublicMapIndex = lMapIndex >= 10000 ? lMapIndex / 10000 : lMapIndex;
|
||||||
|
|
||||||
//Send Supplementary Data Block if new map requires security packages in loading this map
|
|
||||||
const TMapRegion * rMapRgn = SECTREE_MANAGER::instance().GetMapRegion(lPublicMapIndex);
|
|
||||||
if( rMapRgn )
|
|
||||||
{
|
|
||||||
DESC_MANAGER::instance().SendClientPackageSDBToLoadMap( d, rMapRgn->strMapName.c_str() );
|
|
||||||
}
|
|
||||||
//if (!map_allow_find(lMapIndex >= 10000 ? lMapIndex / 10000 : lMapIndex) || !CheckEmpire(ch, lMapIndex))
|
|
||||||
if (!map_allow_find(lPublicMapIndex))
|
if (!map_allow_find(lPublicMapIndex))
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("InputDB::PlayerLoad : entering {} map is not allowed here (name: {}, empire {})",
|
SPDLOG_ERROR("InputDB::PlayerLoad : entering {} map is not allowed here (name: {}, empire {})",
|
||||||
@ -1304,13 +1295,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 +1673,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)
|
||||||
@ -1706,22 +1697,9 @@ void CInputDB::AuthLogin(LPDESC d, const char * c_pData)
|
|||||||
ptoc.bHeader = HEADER_GC_AUTH_SUCCESS;
|
ptoc.bHeader = HEADER_GC_AUTH_SUCCESS;
|
||||||
|
|
||||||
if (bResult)
|
if (bResult)
|
||||||
{
|
|
||||||
// Panama 암호화 팩에 필요한 키 보내기
|
|
||||||
SendPanamaList(d);
|
|
||||||
ptoc.dwLoginKey = d->GetLoginKey();
|
ptoc.dwLoginKey = d->GetLoginKey();
|
||||||
|
|
||||||
//NOTE: AuthSucess보다 먼저 보내야지 안그러면 PHASE Close가 되서 보내지지 않는다.-_-
|
|
||||||
//Send Client Package CryptKey
|
|
||||||
{
|
|
||||||
DESC_MANAGER::instance().SendClientPackageCryptKey(d);
|
|
||||||
DESC_MANAGER::instance().SendClientPackageSDBToLoadMap(d, MAPNAME_DEFAULT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
ptoc.dwLoginKey = 0;
|
ptoc.dwLoginKey = 0;
|
||||||
}
|
|
||||||
|
|
||||||
ptoc.bResult = bResult;
|
ptoc.bResult = bResult;
|
||||||
|
|
||||||
|
@ -1243,258 +1243,6 @@ void CInputMain::Position(LPCHARACTER ch, const char * data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int ComboSequenceBySkillLevel[3][8] =
|
|
||||||
{
|
|
||||||
// 0 1 2 3 4 5 6 7
|
|
||||||
{ 14, 15, 16, 17, 0, 0, 0, 0 },
|
|
||||||
{ 14, 15, 16, 18, 20, 0, 0, 0 },
|
|
||||||
{ 14, 15, 16, 18, 19, 17, 0, 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
#define COMBO_HACK_ALLOWABLE_MS 100
|
|
||||||
|
|
||||||
// [2013 09 11 CYH]
|
|
||||||
DWORD ClacValidComboInterval( LPCHARACTER ch, BYTE bArg )
|
|
||||||
{
|
|
||||||
int nInterval = 300;
|
|
||||||
float fAdjustNum = 1.5f; // 일반 유저가 speed hack 에 걸리는 것을 막기 위해. 2013.09.10 CYH
|
|
||||||
|
|
||||||
if( !ch )
|
|
||||||
{
|
|
||||||
SPDLOG_ERROR("ClacValidComboInterval() ch is NULL");
|
|
||||||
return nInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( bArg == 13 )
|
|
||||||
{
|
|
||||||
float normalAttackDuration = CMotionManager::instance().GetNormalAttackDuration(ch->GetRaceNum());
|
|
||||||
nInterval = (int) (normalAttackDuration / (((float) ch->GetPoint(POINT_ATT_SPEED) / 100.f) * 900.f) + fAdjustNum );
|
|
||||||
}
|
|
||||||
else if( bArg == 14 )
|
|
||||||
{
|
|
||||||
nInterval = (int)(ani_combo_speed(ch, 1 ) / ((ch->GetPoint(POINT_ATT_SPEED) / 100.f) + fAdjustNum) );
|
|
||||||
}
|
|
||||||
else if( bArg > 14 && bArg << 22 )
|
|
||||||
{
|
|
||||||
nInterval = (int)(ani_combo_speed(ch, bArg - 13 ) / ((ch->GetPoint(POINT_ATT_SPEED) / 100.f) + fAdjustNum) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SPDLOG_ERROR("ClacValidComboInterval() Invalid bArg({}) ch({})", bArg, ch->GetName() );
|
|
||||||
}
|
|
||||||
|
|
||||||
return nInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack)
|
|
||||||
{
|
|
||||||
// 죽거나 기절 상태에서는 공격할 수 없으므로, skip한다.
|
|
||||||
// 이렇게 하지 말고, CHRACTER::CanMove()에
|
|
||||||
// if (IsStun() || IsDead()) return false;
|
|
||||||
// 를 추가하는게 맞다고 생각하나,
|
|
||||||
// 이미 다른 부분에서 CanMove()는 IsStun(), IsDead()과
|
|
||||||
// 독립적으로 체크하고 있기 때문에 수정에 의한 영향을
|
|
||||||
// 최소화하기 위해 이렇게 땜빵 코드를 써놓는다.
|
|
||||||
if (ch->IsStun() || ch->IsDead())
|
|
||||||
return false;
|
|
||||||
int ComboInterval = dwTime - ch->GetLastComboTime();
|
|
||||||
int HackScalar = 0; // 기본 스칼라 단위 1
|
|
||||||
|
|
||||||
// [2013 09 11 CYH] debugging log
|
|
||||||
/*SPDLOG_DEBUG("COMBO_TEST_LOG: {} arg:{} interval:{} valid:{} atkspd:{} riding:{}",
|
|
||||||
ch->GetName(),
|
|
||||||
bArg,
|
|
||||||
ComboInterval,
|
|
||||||
ch->GetValidComboInterval(),
|
|
||||||
ch->GetPoint(POINT_ATT_SPEED),
|
|
||||||
ch->IsRiding() ? "yes" : "no");*/
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
SPDLOG_DEBUG("COMBO: {} arg:{} seq:{} delta:{} checkspeedhack:{}",
|
|
||||||
ch->GetName(), bArg, ch->GetComboSequence(), ComboInterval - ch->GetValidComboInterval(), CheckSpeedHack);
|
|
||||||
#endif
|
|
||||||
// bArg 14 ~ 21번 까지 총 8콤보 가능
|
|
||||||
// 1. 첫 콤보(14)는 일정 시간 이후에 반복 가능
|
|
||||||
// 2. 15 ~ 21번은 반복 불가능
|
|
||||||
// 3. 차례대로 증가한다.
|
|
||||||
if (bArg == 14)
|
|
||||||
{
|
|
||||||
if (CheckSpeedHack && ComboInterval > 0 && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)
|
|
||||||
{
|
|
||||||
// FIXME 첫번째 콤보는 이상하게 빨리 올 수가 있어서 300으로 나눔 -_-;
|
|
||||||
// 다수의 몬스터에 의해 다운되는 상황에서 공격을 하면
|
|
||||||
// 첫번째 콤보가 매우 적은 인터벌로 들어오는 상황 발생.
|
|
||||||
// 이로 인해 콤보핵으로 튕기는 경우가 있어 다음 코드 비 활성화.
|
|
||||||
//HackScalar = 1 + (ch->GetValidComboInterval() - ComboInterval) / 300;
|
|
||||||
|
|
||||||
//SPDLOG_WARN("COMBO_HACK: 2 {} arg:{} interval:{} valid:{} atkspd:{} riding:{}",
|
|
||||||
// ch->GetName(),
|
|
||||||
// bArg,
|
|
||||||
// ComboInterval,
|
|
||||||
// ch->GetValidComboInterval(),
|
|
||||||
// ch->GetPoint(POINT_ATT_SPEED),
|
|
||||||
// ch->IsRiding() ? "yes" : "no");
|
|
||||||
}
|
|
||||||
|
|
||||||
ch->SetComboSequence(1);
|
|
||||||
// 2013 09 11 CYH edited
|
|
||||||
//ch->SetValidComboInterval((int) (ani_combo_speed(ch, 1) / (ch->GetPoint(POINT_ATT_SPEED) / 100.f)));
|
|
||||||
ch->SetValidComboInterval( ClacValidComboInterval(ch, bArg) );
|
|
||||||
ch->SetLastComboTime(dwTime);
|
|
||||||
}
|
|
||||||
else if (bArg > 14 && bArg < 22)
|
|
||||||
{
|
|
||||||
int idx = std::min<int>(2, ch->GetComboIndex());
|
|
||||||
|
|
||||||
if (ch->GetComboSequence() > 5) // 현재 6콤보 이상은 없다.
|
|
||||||
{
|
|
||||||
HackScalar = 1;
|
|
||||||
ch->SetValidComboInterval(300);
|
|
||||||
SPDLOG_WARN("COMBO_HACK: 5 {} combo_seq:{}", ch->GetName(), ch->GetComboSequence());
|
|
||||||
}
|
|
||||||
// 자객 쌍수 콤보 예외처리
|
|
||||||
else if (bArg == 21 &&
|
|
||||||
idx == 2 &&
|
|
||||||
ch->GetComboSequence() == 5 &&
|
|
||||||
ch->GetJob() == JOB_ASSASSIN &&
|
|
||||||
ch->GetWear(WEAR_WEAPON) &&
|
|
||||||
ch->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER)
|
|
||||||
ch->SetValidComboInterval(300);
|
|
||||||
else if (ComboSequenceBySkillLevel[idx][ch->GetComboSequence()] != bArg)
|
|
||||||
{
|
|
||||||
HackScalar = 1;
|
|
||||||
ch->SetValidComboInterval(300);
|
|
||||||
|
|
||||||
SPDLOG_WARN("COMBO_HACK: 3 {} arg:{} valid:{} combo_idx:{} combo_seq:{}",
|
|
||||||
ch->GetName(),
|
|
||||||
bArg,
|
|
||||||
ComboSequenceBySkillLevel[idx][ch->GetComboSequence()],
|
|
||||||
idx,
|
|
||||||
ch->GetComboSequence());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (CheckSpeedHack && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)
|
|
||||||
{
|
|
||||||
HackScalar = 1 + (ch->GetValidComboInterval() - ComboInterval) / 100;
|
|
||||||
|
|
||||||
SPDLOG_WARN("COMBO_HACK: 2 {} arg:{} interval:{} valid:{} atkspd:{} riding:{}",
|
|
||||||
ch->GetName(),
|
|
||||||
bArg,
|
|
||||||
ComboInterval,
|
|
||||||
ch->GetValidComboInterval(),
|
|
||||||
ch->GetPoint(POINT_ATT_SPEED),
|
|
||||||
ch->IsRiding() ? "yes" : "no");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 말을 탔을 때는 15번 ~ 16번을 반복한다
|
|
||||||
//if (ch->IsHorseRiding())
|
|
||||||
if (ch->IsRiding())
|
|
||||||
ch->SetComboSequence(ch->GetComboSequence() == 1 ? 2 : 1);
|
|
||||||
else
|
|
||||||
ch->SetComboSequence(ch->GetComboSequence() + 1);
|
|
||||||
|
|
||||||
// 2013 09 11 CYH edited
|
|
||||||
//ch->SetValidComboInterval((int) (ani_combo_speed(ch, bArg - 13) / (ch->GetPoint(POINT_ATT_SPEED) / 100.f)));
|
|
||||||
ch->SetValidComboInterval( ClacValidComboInterval(ch, bArg) );
|
|
||||||
ch->SetLastComboTime(dwTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (bArg == 13) // 기본 공격 (둔갑(Polymorph)했을 때 온다)
|
|
||||||
{
|
|
||||||
if (CheckSpeedHack && ComboInterval > 0 && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)
|
|
||||||
{
|
|
||||||
// 다수의 몬스터에 의해 다운되는 상황에서 공격을 하면
|
|
||||||
// 첫번째 콤보가 매우 적은 인터벌로 들어오는 상황 발생.
|
|
||||||
// 이로 인해 콤보핵으로 튕기는 경우가 있어 다음 코드 비 활성화.
|
|
||||||
//HackScalar = 1 + (ch->GetValidComboInterval() - ComboInterval) / 100;
|
|
||||||
|
|
||||||
//SPDLOG_WARN("COMBO_HACK: 6 {} arg:{} interval:{} valid:{} atkspd:{}",
|
|
||||||
// ch->GetName(),
|
|
||||||
// bArg,
|
|
||||||
// ComboInterval,
|
|
||||||
// ch->GetValidComboInterval(),
|
|
||||||
// ch->GetPoint(POINT_ATT_SPEED));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ch->GetRaceNum() >= MAIN_RACE_MAX_NUM)
|
|
||||||
{
|
|
||||||
// POLYMORPH_BUG_FIX
|
|
||||||
|
|
||||||
// DELETEME
|
|
||||||
/*
|
|
||||||
const CMotion * pkMotion = CMotionManager::instance().GetMotion(ch->GetRaceNum(), MAKE_MOTION_KEY(MOTION_MODE_GENERAL, MOTION_NORMAL_ATTACK));
|
|
||||||
|
|
||||||
if (!pkMotion)
|
|
||||||
SPDLOG_ERROR("cannot find motion by race {}", ch->GetRaceNum());
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 정상적 계산이라면 1000.f를 곱해야 하지만 클라이언트가 애니메이션 속도의 90%에서
|
|
||||||
// 다음 애니메이션 블렌딩을 허용하므로 900.f를 곱한다.
|
|
||||||
int k = (int) (pkMotion->GetDuration() / ((float) ch->GetPoint(POINT_ATT_SPEED) / 100.f) * 900.f);
|
|
||||||
ch->SetValidComboInterval(k);
|
|
||||||
ch->SetLastComboTime(dwTime);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// 2013 09 11 CYH edited
|
|
||||||
//float normalAttackDuration = CMotionManager::instance().GetNormalAttackDuration(ch->GetRaceNum());
|
|
||||||
//int k = (int) (normalAttackDuration / ((float) ch->GetPoint(POINT_ATT_SPEED) / 100.f) * 900.f);
|
|
||||||
//ch->SetValidComboInterval(k);
|
|
||||||
ch->SetValidComboInterval( ClacValidComboInterval(ch, bArg) );
|
|
||||||
ch->SetLastComboTime(dwTime);
|
|
||||||
// END_OF_POLYMORPH_BUG_FIX
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 말이 안되는 콤보가 왔다 해커일 가능성?
|
|
||||||
//if (ch->GetDesc()->DelayedDisconnect(Random::get(2, 9)))
|
|
||||||
//{
|
|
||||||
// LogManager::instance().HackLog("Hacker", ch);
|
|
||||||
// SPDLOG_WARN("HACKER: {} arg {}", ch->GetName(), bArg);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// 위 코드로 인해, 폴리모프를 푸는 중에 공격 하면,
|
|
||||||
// 가끔 핵으로 인식하는 경우가 있다.
|
|
||||||
|
|
||||||
// 자세히 말혀면,
|
|
||||||
// 서버에서 poly 0를 처리했지만,
|
|
||||||
// 클라에서 그 패킷을 받기 전에, 몹을 공격. <- 즉, 몹인 상태에서 공격.
|
|
||||||
//
|
|
||||||
// 그러면 클라에서는 서버에 몹 상태로 공격했다는 커맨드를 보내고 (arg == 13)
|
|
||||||
//
|
|
||||||
// 서버에서는 race는 인간인데 공격형태는 몹인 놈이다! 라고 하여 핵체크를 했다.
|
|
||||||
|
|
||||||
// 사실 공격 패턴에 대한 것은 클라이언트에서 판단해서 보낼 것이 아니라,
|
|
||||||
// 서버에서 판단해야 할 것인데... 왜 이렇게 해놨을까...
|
|
||||||
// by rtsummit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 말이 안되는 콤보가 왔다 해커일 가능성?
|
|
||||||
if (ch->GetDesc()->DelayedDisconnect(Random::get(2, 9)))
|
|
||||||
{
|
|
||||||
LogManager::instance().HackLog("Hacker", ch);
|
|
||||||
SPDLOG_WARN("HACKER: {} arg {}", ch->GetName(), bArg);
|
|
||||||
}
|
|
||||||
|
|
||||||
HackScalar = 10;
|
|
||||||
ch->SetValidComboInterval(300);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HackScalar)
|
|
||||||
{
|
|
||||||
// 말에 타거나 내렸을 때 1.5초간 공격은 핵으로 간주하지 않되 공격력은 없게 하는 처리
|
|
||||||
if (get_dword_time() - ch->GetLastMountTime() > 1500)
|
|
||||||
ch->IncreaseComboHackCount(1 + HackScalar);
|
|
||||||
|
|
||||||
ch->SkipComboAttackByTime(ch->GetValidComboInterval());
|
|
||||||
}
|
|
||||||
|
|
||||||
return HackScalar;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CInputMain::Move(LPCHARACTER ch, const char * data)
|
void CInputMain::Move(LPCHARACTER ch, const char * data)
|
||||||
{
|
{
|
||||||
if (!ch->CanMove())
|
if (!ch->CanMove())
|
||||||
@ -1508,68 +1256,16 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//enum EMoveFuncType
|
// Check for teleportation hacks
|
||||||
//{
|
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
|
||||||
// FUNC_WAIT,
|
|
||||||
// FUNC_MOVE,
|
|
||||||
// FUNC_ATTACK,
|
|
||||||
// FUNC_COMBO,
|
|
||||||
// FUNC_MOB_SKILL,
|
|
||||||
// _FUNC_SKILL,
|
|
||||||
// FUNC_MAX_NUM,
|
|
||||||
// FUNC_SKILL = 0x80,
|
|
||||||
//};
|
|
||||||
|
|
||||||
// 텔레포트 핵 체크
|
if (((false == ch->IsRiding() && fDist > 25) || fDist > 40) && OXEVENT_MAP_INDEX != ch->GetMapIndex())
|
||||||
|
|
||||||
// if (!test_server) //2012.05.15 김용욱 : 테섭에서 (무적상태로) 다수 몬스터 상대로 다운되면서 공격시 콤보핵으로 죽는 문제가 있었다.
|
|
||||||
{
|
{
|
||||||
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
|
SPDLOG_WARN("MOVE: {} trying to move too far (dist: {:.1f}m) Riding({})", ch->GetName(), fDist, ch->IsRiding());
|
||||||
|
|
||||||
if (((false == ch->IsRiding() && fDist > 25) || fDist > 40) && OXEVENT_MAP_INDEX != ch->GetMapIndex())
|
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
|
||||||
{
|
ch->Stop();
|
||||||
SPDLOG_WARN("MOVE: {} trying to move too far (dist: {:.1f}m) Riding({})", ch->GetName(), fDist, ch->IsRiding());
|
return;
|
||||||
|
|
||||||
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
|
|
||||||
ch->Stop();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 스피드핵(SPEEDHACK) Check
|
|
||||||
//
|
|
||||||
DWORD dwCurTime = get_dword_time();
|
|
||||||
// 시간을 Sync하고 7초 후 부터 검사한다. (20090702 이전엔 5초였음)
|
|
||||||
bool CheckSpeedHack = (false == ch->GetDesc()->IsHandshaking() && dwCurTime - ch->GetDesc()->GetClientTime() > 7000);
|
|
||||||
|
|
||||||
if (CheckSpeedHack)
|
|
||||||
{
|
|
||||||
int iDelta = (int) (pinfo->dwTime - ch->GetDesc()->GetClientTime());
|
|
||||||
int iServerDelta = (int) (dwCurTime - ch->GetDesc()->GetClientTime());
|
|
||||||
|
|
||||||
iDelta = (int) (dwCurTime - pinfo->dwTime);
|
|
||||||
|
|
||||||
// 시간이 늦게간다. 일단 로그만 해둔다. 진짜 이런 사람들이 많은지 체크해야함. TODO
|
|
||||||
if (iDelta >= 30000)
|
|
||||||
{
|
|
||||||
SPDLOG_WARN("SPEEDHACK: slow timer name {} delta {}", ch->GetName(), iDelta);
|
|
||||||
ch->GetDesc()->DelayedDisconnect(3);
|
|
||||||
}
|
|
||||||
// 1초에 20msec 빨리 가는거 까지는 이해한다.
|
|
||||||
else if (iDelta < -(iServerDelta / 50))
|
|
||||||
{
|
|
||||||
SPDLOG_WARN("SPEEDHACK: DETECTED! {} (delta {} {})", ch->GetName(), iDelta, iServerDelta);
|
|
||||||
ch->GetDesc()->DelayedDisconnect(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 콤보핵 및 스피드핵 체크
|
|
||||||
//
|
|
||||||
if (pinfo->bFunc == FUNC_COMBO && g_bCheckMultiHack)
|
|
||||||
{
|
|
||||||
CheckComboHack(ch, pinfo->bArg, pinfo->dwTime, CheckSpeedHack); // 콤보 체크
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pinfo->bFunc == FUNC_MOVE)
|
if (pinfo->bFunc == FUNC_MOVE)
|
||||||
@ -1637,30 +1333,17 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
|
|||||||
pack.dwDuration = (pinfo->bFunc == FUNC_MOVE) ? ch->GetCurrentMoveDuration() : 0;
|
pack.dwDuration = (pinfo->bFunc == FUNC_MOVE) ? ch->GetCurrentMoveDuration() : 0;
|
||||||
|
|
||||||
ch->PacketAround(&pack, sizeof(TPacketGCMove), ch);
|
ch->PacketAround(&pack, sizeof(TPacketGCMove), ch);
|
||||||
/*
|
|
||||||
if (pinfo->dwTime == 10653691) // 디버거 발견
|
|
||||||
{
|
|
||||||
if (ch->GetDesc()->DelayedDisconnect(Random::get(15, 30)))
|
|
||||||
LogManager::instance().HackLog("Debugger", ch);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (pinfo->dwTime == 10653971) // Softice 발견
|
|
||||||
{
|
|
||||||
if (ch->GetDesc()->DelayedDisconnect(Random::get(15, 30)))
|
|
||||||
LogManager::instance().HackLog("Softice", ch);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
SPDLOG_TRACE(
|
SPDLOG_TRACE(
|
||||||
"MOVE: {} Func:{} Arg:{} Pos:{}x{} Time:{} Dist:{:.1f}",
|
"MOVE: {} Func:{} Arg:{} Pos:{}x{} Time:{} Dist:{:.1f}",
|
||||||
ch->GetName(),
|
ch->GetName(),
|
||||||
pinfo->bFunc,
|
pinfo->bFunc,
|
||||||
pinfo->bArg,
|
pinfo->bArg,
|
||||||
pinfo->lX / 100,
|
pinfo->lX / 100,
|
||||||
pinfo->lY / 100,
|
pinfo->lY / 100,
|
||||||
pinfo->dwTime,
|
pinfo->dwTime,
|
||||||
fDist);
|
fDist
|
||||||
*/
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputMain::Attack(LPCHARACTER ch, const BYTE header, const char* data)
|
void CInputMain::Attack(LPCHARACTER ch, const BYTE header, const char* data)
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
#include "horsename_manager.h"
|
#include "horsename_manager.h"
|
||||||
#include "MarkManager.h"
|
#include "MarkManager.h"
|
||||||
#include "spam.h"
|
#include "spam.h"
|
||||||
#include "panama.h"
|
|
||||||
#include "threeway_war.h"
|
#include "threeway_war.h"
|
||||||
#include "DragonLair.h"
|
#include "DragonLair.h"
|
||||||
#include "skill_power.h"
|
#include "skill_power.h"
|
||||||
@ -402,20 +401,10 @@ int main(int argc, char **argv)
|
|||||||
Cube_init();
|
Cube_init();
|
||||||
Blend_Item_init();
|
Blend_Item_init();
|
||||||
ani_init();
|
ani_init();
|
||||||
PanamaLoad();
|
|
||||||
|
|
||||||
if ( g_bTrafficProfileOn )
|
if ( g_bTrafficProfileOn )
|
||||||
TrafficProfiler::instance().Initialize( TRAFFIC_PROFILE_FLUSH_CYCLE, "ProfileLog" );
|
TrafficProfiler::instance().Initialize( TRAFFIC_PROFILE_FLUSH_CYCLE, "ProfileLog" );
|
||||||
|
|
||||||
// Client PackageCrypt
|
|
||||||
|
|
||||||
//TODO : make it config
|
|
||||||
const std::string strPackageCryptInfoDir = "package/";
|
|
||||||
if( !desc_manager.LoadClientPackageCryptInfo( strPackageCryptInfoDir.c_str() ) )
|
|
||||||
{
|
|
||||||
SPDLOG_WARN("Failed to Load ClientPackageCryptInfo Files ({})", strPackageCryptInfoDir);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (idle());
|
while (idle());
|
||||||
|
|
||||||
SPDLOG_INFO("<shutdown> Starting...");
|
SPDLOG_INFO("<shutdown> Starting...");
|
||||||
@ -513,9 +502,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 +585,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 +611,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 +629,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(
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,13 +260,6 @@ enum
|
|||||||
|
|
||||||
HEADER_GC_AUTH_SUCCESS = 150,
|
HEADER_GC_AUTH_SUCCESS = 150,
|
||||||
|
|
||||||
HEADER_GC_PANAMA_PACK = 151,
|
|
||||||
|
|
||||||
//HYBRID CRYPT
|
|
||||||
HEADER_GC_HYBRIDCRYPT_KEYS = 152,
|
|
||||||
HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks
|
|
||||||
//HYBRID CRYPT
|
|
||||||
|
|
||||||
// ROULETTE
|
// ROULETTE
|
||||||
HEADER_GC_ROULETTE = 200,
|
HEADER_GC_ROULETTE = 200,
|
||||||
// END_ROULETTE
|
// END_ROULETTE
|
||||||
@ -2119,110 +2112,6 @@ typedef struct SPacketGGCheckAwakeness
|
|||||||
BYTE bHeader;
|
BYTE bHeader;
|
||||||
} TPacketGGCheckAwakeness;
|
} TPacketGGCheckAwakeness;
|
||||||
|
|
||||||
typedef struct SPacketGCPanamaPack
|
|
||||||
{
|
|
||||||
BYTE bHeader;
|
|
||||||
char szPackName[256];
|
|
||||||
BYTE abIV[32];
|
|
||||||
} TPacketGCPanamaPack;
|
|
||||||
|
|
||||||
//TODO : 아우 짱나..가변패킷 사이즈 받아들일수 있게 패킷 핸들러 Refactoring 하자.
|
|
||||||
typedef struct SPacketGCHybridCryptKeys
|
|
||||||
{
|
|
||||||
SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
|
|
||||||
~SPacketGCHybridCryptKeys()
|
|
||||||
{
|
|
||||||
//GCC 에선 NULL delete 해도 괜찮나? 일단 안전하게 NULL 체크 하자. ( 근데 이거 C++ 표준아니었나 --a )
|
|
||||||
if( m_pStream )
|
|
||||||
{
|
|
||||||
delete[] m_pStream;
|
|
||||||
m_pStream = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD GetStreamSize()
|
|
||||||
{
|
|
||||||
return sizeof(bHeader) + sizeof(WORD) + sizeof(INT) + KeyStreamLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE* GetStreamData()
|
|
||||||
{
|
|
||||||
if( m_pStream )
|
|
||||||
delete[] m_pStream;
|
|
||||||
|
|
||||||
uDynamicPacketSize = (WORD)GetStreamSize();
|
|
||||||
|
|
||||||
m_pStream = new BYTE[ uDynamicPacketSize ];
|
|
||||||
|
|
||||||
memcpy( m_pStream, &bHeader, 1 );
|
|
||||||
memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
|
|
||||||
memcpy( m_pStream+3, &KeyStreamLen, 4 );
|
|
||||||
|
|
||||||
if( KeyStreamLen > 0 )
|
|
||||||
memcpy( m_pStream+7, pDataKeyStream, KeyStreamLen );
|
|
||||||
|
|
||||||
return m_pStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE bHeader;
|
|
||||||
WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
|
|
||||||
INT KeyStreamLen;
|
|
||||||
BYTE* pDataKeyStream;
|
|
||||||
|
|
||||||
private:
|
|
||||||
BYTE* m_pStream;
|
|
||||||
|
|
||||||
|
|
||||||
} TPacketGCHybridCryptKeys;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct SPacketGCPackageSDB
|
|
||||||
{
|
|
||||||
SPacketGCPackageSDB() : m_pDataSDBStream(NULL), m_pStream(NULL) {}
|
|
||||||
~SPacketGCPackageSDB()
|
|
||||||
{
|
|
||||||
if( m_pStream )
|
|
||||||
{
|
|
||||||
delete[] m_pStream;
|
|
||||||
m_pStream = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD GetStreamSize()
|
|
||||||
{
|
|
||||||
return sizeof(bHeader) + sizeof(WORD) + sizeof(INT) + iStreamLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE* GetStreamData()
|
|
||||||
{
|
|
||||||
if( m_pStream )
|
|
||||||
delete[] m_pStream;
|
|
||||||
|
|
||||||
uDynamicPacketSize = GetStreamSize();
|
|
||||||
|
|
||||||
m_pStream = new BYTE[ uDynamicPacketSize ];
|
|
||||||
|
|
||||||
memcpy( m_pStream, &bHeader, 1 );
|
|
||||||
memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
|
|
||||||
memcpy( m_pStream+3, &iStreamLen, 4 );
|
|
||||||
|
|
||||||
if( iStreamLen > 0 )
|
|
||||||
memcpy( m_pStream+7, m_pDataSDBStream, iStreamLen );
|
|
||||||
|
|
||||||
return m_pStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE bHeader;
|
|
||||||
WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
|
|
||||||
INT iStreamLen;
|
|
||||||
BYTE* m_pDataSDBStream;
|
|
||||||
|
|
||||||
private:
|
|
||||||
BYTE* m_pStream;
|
|
||||||
|
|
||||||
|
|
||||||
} TPacketGCPackageSDB;
|
|
||||||
|
|
||||||
#define MAX_EFFECT_FILE_NAME 128
|
#define MAX_EFFECT_FILE_NAME 128
|
||||||
typedef struct SPacketGCSpecificEffect
|
typedef struct SPacketGCSpecificEffect
|
||||||
{
|
{
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
#include "stdafx.h"
|
|
||||||
#include "desc.h"
|
|
||||||
#include "packet.h"
|
|
||||||
|
|
||||||
typedef std::vector<std::pair<std::string, BYTE* > > PanamaVectorType;
|
|
||||||
static PanamaVectorType s_panamaVector;
|
|
||||||
|
|
||||||
size_t PanamaLoad()
|
|
||||||
{
|
|
||||||
FILE* fp;
|
|
||||||
|
|
||||||
fp = fopen("panama/panama.lst", "r");
|
|
||||||
|
|
||||||
if (!fp)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
while (fgets(buf, 256, fp))
|
|
||||||
{
|
|
||||||
char szPackName[256];
|
|
||||||
char szIVFileName[512];
|
|
||||||
char szIVFileNameConfig[256];
|
|
||||||
|
|
||||||
sscanf(buf, " %s %s ", szPackName, szIVFileNameConfig);
|
|
||||||
snprintf(szIVFileName, sizeof(szIVFileName), "panama/%s", szIVFileNameConfig);
|
|
||||||
|
|
||||||
FILE * fpIV = fopen(szIVFileName, "rb");
|
|
||||||
|
|
||||||
if (!fpIV)
|
|
||||||
{
|
|
||||||
SPDLOG_ERROR("cannot open iv file {}", szIVFileName);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
BYTE abIV[32];
|
|
||||||
|
|
||||||
if (32 != fread(abIV, sizeof(BYTE), 32, fpIV))
|
|
||||||
SPDLOG_ERROR("IV file format error! {}", szIVFileName);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char szHex[64 + 1];
|
|
||||||
|
|
||||||
for (int i = 0; i < 32; ++i)
|
|
||||||
snprintf(szHex + i * 2, sizeof(szHex) - i * 2, "%02x", abIV[i]);
|
|
||||||
|
|
||||||
SPDLOG_DEBUG("PANAMA: {} {}", szPackName, szHex);
|
|
||||||
|
|
||||||
s_panamaVector.push_back(std::make_pair(szPackName, M2_NEW BYTE[32]));
|
|
||||||
memcpy(s_panamaVector[s_panamaVector.size() - 1].second, abIV, 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fpIV);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
return s_panamaVector.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PanamaDestroy()
|
|
||||||
{
|
|
||||||
PanamaVectorType::iterator it = s_panamaVector.begin();
|
|
||||||
|
|
||||||
while (it != s_panamaVector.end()) {
|
|
||||||
M2_DELETE_ARRAY(it->second);
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SendPanamaList(LPDESC d)
|
|
||||||
{
|
|
||||||
TPacketGCPanamaPack pack;
|
|
||||||
|
|
||||||
pack.bHeader = HEADER_GC_PANAMA_PACK;
|
|
||||||
|
|
||||||
PanamaVectorType::iterator it = s_panamaVector.begin();
|
|
||||||
|
|
||||||
while (it != s_panamaVector.end())
|
|
||||||
{
|
|
||||||
strlcpy(pack.szPackName, it->first.c_str(), sizeof(pack.szPackName));
|
|
||||||
memcpy(pack.abIV, it->second, sizeof(pack.abIV));
|
|
||||||
|
|
||||||
|
|
||||||
DWORD* ivs = (DWORD*)pack.abIV;
|
|
||||||
for (int i = 0; i != 32 / sizeof(DWORD); i++)
|
|
||||||
{
|
|
||||||
ivs[i] ^= d->GetPanamaKey() + i * 16777619; // 더블워드단위로 변형된 파나마 키를 XOR 해준다
|
|
||||||
}
|
|
||||||
++it;
|
|
||||||
|
|
||||||
d->Packet(&pack, sizeof(pack));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
#ifndef __INC_METIN_II_PANAMA_H__
|
|
||||||
#define __INC_METIN_II_PANAMA_H__
|
|
||||||
|
|
||||||
extern size_t PanamaLoad();
|
|
||||||
extern void SendPanamaList(LPDESC d);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1640,7 +1640,7 @@ namespace quest
|
|||||||
vsnprintf(szMsg, sizeof(szMsg), fmt, args);
|
vsnprintf(szMsg, sizeof(szMsg), fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
SPDLOG_ERROR("Quest error occurred in [{}:{}}]: {}", func, line, szMsg);
|
SPDLOG_ERROR("Quest error occurred in [{}:{}]: {}", func, line, szMsg);
|
||||||
if (test_server)
|
if (test_server)
|
||||||
{
|
{
|
||||||
LPCHARACTER ch = GetCurrentCharacterPtr();
|
LPCHARACTER ch = GetCurrentCharacterPtr();
|
||||||
|
@ -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));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user