Помощ със reHLDS и AmxModX 1.8.3
-
x7s
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 20 Яну 2018, 11:00
- Местоположение: България
- Се отблагодари: 19 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Здравейте.
От скоро започнах да се занимавам отново с сървъри и тяхното правилно компилиране в PAWN.
И срещам доста трудности, защото съм забравил много неща, а и от тогава когато се занимавах, до сега, нещата са се променили и продължават да се променят ежедневно.
Започнах да преправям един WaR3FT-Respawn сървър свалих си всичко нужно от reHLDS платформата сглобена и ъпдейтната до най-новите билд на модулите и т.н. екстрите към нея.
Та започнах да компилирам един по един плъгините, стандартните в AmxModX си ги компилирах автоматично, все пак няма какво да стане и да се сбози, и за това първо тях ги компилирах, за да не срещам изненади със разни библиотеки, ако се наложи да сменя някъде някоя библиотека, за да компилирам следващите плъгинчета нормално, които искам да има платформата и да си бачка платформата, без да има конфликти с объркани библиотеки.
Започнах да слагам самият War3FT плъгин, който взех директно от ТУК, и тук започнаха проблемите ми.
Въпроса ми е простичък има ли възможност в АmxМodX (1.8.3-dev-git5151) да се компилират плъгини, които са работили нормално и без грешки в предходната версия 1.8.2?
Питам защото преди години, когато беше тогавашна версия 1.8.2-dev-hg60 въпросния плъгин го бях намерил в сегашния му вид и реших да го компилирам, за да му се радваме в нашите сървъри, които поддържах тогава, и си работеше идеално.
Та още по-просто казано: Как да компилирам всички работещи плъгини от 1.8.2 на 1.8.3
Защото ако трябва да преправям всички плъгини с всички новости, то това си е бая писане, а с това темпо на разработчиците, аз немога да смогна да ъпдейтвам само платформата, пък камо ли да пренапиша всички плъгини, които сме ползвали за платформата преди години с 1.8.2
А самата идея е да се премине към 1.8.3 и вече в процес на обновяванията на платформата и т.н. да си пренаписвам тук там някой друг плъгин с КПК, или да го сваля, за по лесно от готов източник и просто да ъпдейтвам, ако има нужда да се ъпдейтне
ПС. Ако темата ми е пусната в грешен раздел, се извинявам много за което, и ще помоля модератор да я премести в правилния раздел
От скоро започнах да се занимавам отново с сървъри и тяхното правилно компилиране в PAWN.
И срещам доста трудности, защото съм забравил много неща, а и от тогава когато се занимавах, до сега, нещата са се променили и продължават да се променят ежедневно.
Започнах да преправям един WaR3FT-Respawn сървър свалих си всичко нужно от reHLDS платформата сглобена и ъпдейтната до най-новите билд на модулите и т.н. екстрите към нея.
Та започнах да компилирам един по един плъгините, стандартните в AmxModX си ги компилирах автоматично, все пак няма какво да стане и да се сбози, и за това първо тях ги компилирах, за да не срещам изненади със разни библиотеки, ако се наложи да сменя някъде някоя библиотека, за да компилирам следващите плъгинчета нормално, които искам да има платформата и да си бачка платформата, без да има конфликти с объркани библиотеки.
Започнах да слагам самият War3FT плъгин, който взех директно от ТУК, и тук започнаха проблемите ми.
Въпроса ми е простичък има ли възможност в АmxМodX (1.8.3-dev-git5151) да се компилират плъгини, които са работили нормално и без грешки в предходната версия 1.8.2?
Питам защото преди години, когато беше тогавашна версия 1.8.2-dev-hg60 въпросния плъгин го бях намерил в сегашния му вид и реших да го компилирам, за да му се радваме в нашите сървъри, които поддържах тогава, и си работеше идеално.
Та още по-просто казано: Как да компилирам всички работещи плъгини от 1.8.2 на 1.8.3
Защото ако трябва да преправям всички плъгини с всички новости, то това си е бая писане, а с това темпо на разработчиците, аз немога да смогна да ъпдейтвам само платформата, пък камо ли да пренапиша всички плъгини, които сме ползвали за платформата преди години с 1.8.2
А самата идея е да се премине към 1.8.3 и вече в процес на обновяванията на платформата и т.н. да си пренаписвам тук там някой друг плъгин с КПК, или да го сваля, за по лесно от готов източник и просто да ъпдейтвам, ако има нужда да се ъпдейтне
ПС. Ако темата ми е пусната в грешен раздел, се извинявам много за което, и ще помоля модератор да я премести в правилния раздел
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
AMXX има backwards-compatibility, което ще каже, че всички плъгини направени за по-стара версия, трябва да работят без проблеми на по-нови версии. Няма нужда от никакво преработване за да работи на 1.8.3, стига плъгинът да не е калпаво написан. Толкова много неща си написал, ама никъде не си обяснил какъв е самият проблем.
-
x7s
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 20 Яну 2018, 11:00
- Местоположение: България
- Се отблагодари: 19 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Код за потвърждение: Избери целия код
AMX Mod X Compiler 1.8.3-dev+5151
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team
war3ft/cvar.inl(97) : warning 217: loose indentation
war3ft/cvar.inl(104) : warning 217: loose indentation
war3ft/race_blood.inl(49) : warning 217: loose indentation
war3ft/race_blood.inl(50) : warning 217: loose indentation
war3ft/race_blood.inl(62) : warning 217: loose indentation
war3ft/race_blood.inl(65) : warning 217: loose indentation
war3ft/race_blood.inl(75) : warning 217: loose indentation
war3ft/race_blood.inl(79) : warning 217: loose indentation
war3ft/race_blood.inl(81) : warning 217: loose indentation
war3ft/race_blood.inl(87) : warning 217: loose indentation
war3ft/race_blood.inl(98) : warning 217: loose indentation
war3ft/race_crypt.inl(248) : warning 225: unreachable code
war3ft/war3ft.inl(1585) : warning 217: loose indentation
war3ft/war3ft.inl(1588) : warning 217: loose indentation
war3ft/clientCommands.inl(72) : warning 225: unreachable code
war3ft/menus.inl(173) : warning 217: loose indentation
war3ft/admin.inl(54) : warning 217: loose indentation
war3ft/admin.inl(64) : warning 217: loose indentation
war3ft/cstrike.inl(384) : warning 217: loose indentation
war3ft/cstrike.inl(387) : warning 217: loose indentation
Warning: Symbol "is_amd64_server" is marked as deprecated: AMXX is not shipping 64bits builds anymore. This native is basically guaranteed to return 0. on line 356
Warning: Symbol "client_disconnect" is marked as deprecated: Use client_disconnected() instead. on line 454
Warning: Unreachable code on line 715
Header size: 9256 bytes
Code size: 344764 bytes
Data size: 229532 bytes
Stack/heap size: 16384 bytes
Total requirements: 599936 bytes
23 Warnings.
Done.
Както се забелязва, той плъгина, като цяло се е компилирал, но е пълен с грешки, и ще бози супер много, съм убеден не на 100% а на 101%.
Все пак това са адски много грешки, и това е първия плъгин, който добавям в платформата, ами останалите, които смятам да добавям?
И със тях ли трябва по същия начин да се мъча, да ги преправям, където излизат грешки, или ще е по-лесно направо да си кача всички плъгини, и да се надявам, че до края на годината, все някой от екипа тук във форума, ще намери свободно време да ги преправи.
Т.е. да ги пренапише, или да ми отдели от личното си време, да ми помогне да си ги пренапиша, защото повечето плъгини, които искам да ползвам сигурно нямат поддръжка от 2007-ма година
А някой от тях, който са нямали поддръжка, незнайно защо, съм решил да ги обединявам в един, т.е. от два плъгина съм направил един
Което сега осъзнавам, че е било изключително тъпа идея, но проблемът е, че вече не си спомням, кои плъгин, как точно съм го обединявал във друг, за да работят съвместно заедно в едно цяло.
Като цяло, аз съм решил, така или иначе, да ги пренапиша всичките, но идеята беше да ги заобиколя тия грешки временно, до като сървъра си работи
ПС. Ако някой има желание ще пусна във форума в раздел AmxModX "Поддръжка" или "Преработка на плъгини" с пълно описание, на платформата която ползвам, както и добавките към нея, за да сме максимално полезни, на всички останали, които срещат същите проблеми
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Не са грешки, а предупреждения. Няма да имат никакво влияние върху работата на плъгина.
Loose indentation означава, че кодът е неправилно подреден. Пример:
Трябва да стане:
Unreachable code означава, че дадена част от кода не може да бъде "достигната", тъй като преди нея има return. Пример:
За да го оправиш, просто премахни функцията (в случая oshte_edin_kod()).
Symbol is marked as deprecated означава, че в 1.8.3 има по-добра функция на мястото на въпросната и е препоръчително да се ползва тази. Примерно ще ти изпише, че client_disconnect е deprecated, тъй като има нова функция - client_disconnected, съответно трябва да я замениш в кода.
Като цяло може да се изработи един include файл, който автоматично ще превръща deprecated функциите в новите им версии, с което ще се предотвратят предурпеждения от типа на "symbol is marked as deprecated". Обаче "loose indentation" няма как да се оправи с файл. Кодът трябва да е правилно подреден, можеш да позлваш вградените функции на някои текстови редактори за автоматично подреждане на целия файл.
Loose indentation означава, че кодът е неправилно подреден. Пример:
Код за потвърждение: Избери целия код
public funkciq()
{
kod()
oshte_edin_kod()
}
Код за потвърждение: Избери целия код
public funkciq()
{
kod()
oshte_edin_kod()
}
Код за потвърждение: Избери целия код
public funkciq()
{
kod()
return PLUGIN_HANDLED
oshte_edin_kod() // това не може да бъде достигнато заради return-а по-горе
}
Symbol is marked as deprecated означава, че в 1.8.3 има по-добра функция на мястото на въпросната и е препоръчително да се ползва тази. Примерно ще ти изпише, че client_disconnect е deprecated, тъй като има нова функция - client_disconnected, съответно трябва да я замениш в кода.
Като цяло може да се изработи един include файл, който автоматично ще превръща deprecated функциите в новите им версии, с което ще се предотвратят предурпеждения от типа на "symbol is marked as deprecated". Обаче "loose indentation" няма как да се оправи с файл. Кодът трябва да е правилно подреден, можеш да позлваш вградените функции на някои текстови редактори за автоматично подреждане на целия файл.
-
x7s
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 20 Яну 2018, 11:00
- Местоположение: България
- Се отблагодари: 19 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Функцията "client_disconnect" вече разбрах, че просто трябва да я направя на "client_disconnected" и въпросната функция, да не излиза, като грешка.
Следващата грешка : "Loose indentation" тук малко се разрових в интернет, и всичко ми стана ясно, един по един фаиловете, където дава грешка ги поправих, за да не дават грешки като нагласих скобите подравних местата на които трябва да бъде даден код и т.н.
След това, изключих във целия плъгин да не дава една грешка, когато го стартирам, а именно тази: "Host_Error: UserMsg: Not Present on Client 58", като за целта се възползвах от мнението на колегата в тази тема, и за да изключа въпросната проверка в тази функция, просто навсякаде където е написал колегата да се изтрие ненужните за него неща, аз сложих затварящи тагове "/*" и "*/" за да я изключа, като цяло функцията, но да я запазя като такава, във файла.
Така, до тук всичко си е направено и подредено, както си трябва да бъде по учебник, Но когато вече е оправено всичко подредено изключено и т.н. стигаме до следните грешки:
Тук ще те цитирам теб:
Тук малко се обърках кой код точно трябва да махна, при условие, че имам 3 return ?
Реших да го прескоча за сега този ерор и да отворя следващата библиотека clientCommands.inl, за да видя там какво се случва на въпросния ред, където ми излиза грешка, а именно (72):
И отново изумителната ми физиономия можеш да си я представиш както се вижда return PLUGIN_CONTINUE;
Тук обаче нямам код, а направо функции с код, а въпросната грешка е много след самата функция и кодът последващ в нея...
Благодаря много за помощта ти и за отделеното време
Ще се радвам, ако ми помогнеш за тези грешки, как точно трябва да ги поправя, за да не излизат, ако се налага ще прикача и това което съм направил до момента
Edit: Пропуснах да добавя и последната грешка, която излиза в самия war3ft.sma на следния ред 715:
на ред 715 отново return PLUGIN_HANDLED; тук отново не ми стана много ясно кой точно код да изтрия
Следващата грешка : "Loose indentation" тук малко се разрових в интернет, и всичко ми стана ясно, един по един фаиловете, където дава грешка ги поправих, за да не дават грешки като нагласих скобите подравних местата на които трябва да бъде даден код и т.н.
След това, изключих във целия плъгин да не дава една грешка, когато го стартирам, а именно тази: "Host_Error: UserMsg: Not Present on Client 58", като за целта се възползвах от мнението на колегата в тази тема, и за да изключа въпросната проверка в тази функция, просто навсякаде където е написал колегата да се изтрие ненужните за него неща, аз сложих затварящи тагове "/*" и "*/" за да я изключа, като цяло функцията, но да я запазя като такава, във файла.
Така, до тук всичко си е направено и подредено, както си трябва да бъде по учебник, Но когато вече е оправено всичко подредено изключено и т.н. стигаме до следните грешки:
Код за потвърждение: Избери целия код
AMX Mod X Compiler 1.8.3-dev+5151
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team
E:\Ivo\Itanium-Servers\reHLDS Windows War3Respawn\Server\cstrike\addons\amxmodx\scripting\include\war3ft/race_crypt.inl(248) : warning 225: unreachable code
E:\Ivo\Itanium-Servers\reHLDS Windows War3Respawn\Server\cstrike\addons\amxmodx\scripting\include\war3ft/clientCommands.inl(72) : warning 225: unreachable code
Warning: Unreachable code on line 715
Header size: 9136 bytes
Code size: 343532 bytes
Data size: 227676 bytes
Stack/heap size: 16384 bytes
Total requirements: 596728 bytes
3 Warnings.
Done.
Така и решавам да го направя, аз както ми даваш съвет да изтрия функцията, но уви... реално, ако го направя ще затрия код, които е нужен за да работи коректно самия мод, а именно ето тук във race_crypt.inl на ред (248):Unreachable code означава, че дадена част от кода не може да бъде "достигната", тъй като преди нея има return. Пример:За да го оправиш, просто премахни функцията (в случая oshte_edin_kod()).Код за потвърждение: Избери целия код
public funkciq(id) { kod() return PLUGIN_HANDLED oshte_edin_kod() // това не може да бъде достигнато заради return-а по-горе }
Код за потвърждение: Избери целия код
CL_HLP_Diff( iNum, iNum2 )
{
if ( iNum > iNum2 )
{
return (iNum-iNum2);
}
else
{
return (iNum2-iNum);
}
return 0; // Тук е ред 248 можеш да го провериш
}
Реших да го прескоча за сега този ерор и да отворя следващата библиотека clientCommands.inl, за да видя там какво се случва на въпросния ред, където ми излиза грешка, а именно (72):
Код за потвърждение: Избери целия код
public cmd_hegren( id )
{
if ( !WC3_Check() )
{
return PLUGIN_CONTINUE;
}
// Make sure we even have grenade protection on
if ( !get_pcvar_num( CVAR_wc3_grenade_protection ) )
{
return PLUGIN_CONTINUE;
}
// Then they shouldn't be buying a grenade anyway
if ( !cs_get_user_buyzone( id ) )
{
return PLUGIN_HANDLED;
}
// User can only buy one grenade per round
if ( p_data[id][P_HECOUNT] > 0 )
{
client_print( id, print_center, "%L", id, "ONLY_ONE_GRENADE_PER_ROUND" );
return PLUGIN_HANDLED;
}
// Increment since they bought their grenade
else
{
++p_data[id][P_HECOUNT];
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE; // Тук е въпросния 72ри ред
}
Тук обаче нямам код, а направо функции с код, а въпросната грешка е много след самата функция и кодът последващ в нея...
Благодаря много за помощта ти и за отделеното време
Ще се радвам, ако ми помогнеш за тези грешки, как точно трябва да ги поправя, за да не излизат, ако се налага ще прикача и това което съм направил до момента
Edit: Пропуснах да добавя и последната грешка, която излиза в самия war3ft.sma на следния ред 715:
Код за потвърждение: Избери целия код
public module_filter( const module[] )
{
WC3_DetermineGame();
// We don't need the cstrike module when we're DOD
if ( g_MOD == GAME_DOD && equal( module, "cstrike" ) )
{
return PLUGIN_HANDLED;
}
// And we don't need any dod modules when we're in CS/CZ!
else if ( ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO ) && equal( module, "dodfun" ) )
{
return PLUGIN_HANDLED;
}
// We don't need to display a message, we'll display it later if we need to (when the DB is set up if XP Saving is on)
else if ( equal( module, "dbi" ) || equal( module, "sqlx" ) )
{
return PLUGIN_HANDLED;
}
// Dammit plugin can't load now :/ - technically we should never get here unless the module doesn't exist in the modules folder
else
{
WC3_Log( true, "Please enable the '%s' module in your modules.ini file", module );
return PLUGIN_CONTINUE;
}
return PLUGIN_HANDLED; // Тук е ред 715
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Абсолютно не, няма да затриеш никакъв нужен код.Така и решавам да го направя, аз както ми даваш съвет да изтрия функцията, но уви... реално, ако го направя ще затрия код, които е нужен за да работи коректно самия мод, а именно ето тук във race_crypt.inl на ред (248):
Код за потвърждение: Избери целия код
if ( iNum > iNum2 )
{
return (iNum-iNum2);
}
else
{
return (iNum2-iNum);
}
return 0; // Тук е ред 248 можеш да го провериш
Код за потвърждение: Избери целия код
ако iNum е по-голямо от iNum2
{
върни iNum минус iNum2
}
в противен случай
{
върни iNum2 минус iNum
}
върни 0
С прости думи - можеш да премахнеш въпросните редове без да се притестняваш, че ще премахнеш нещо важно от кода.
-
x7s
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 20 Яну 2018, 11:00
- Местоположение: България
- Се отблагодари: 19 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Благодаря много за помоща ти, вече разбрах, къде точно, и какво трябва да се направи, за да се компилира правилно
Просто където ми дава грешка, на въпросния ред, а именно там имам "return", сложих таг за коментар "//" така въпросната грешка е пренебрегната и се смята за коментар въпросния "return", вместо да трия реших да си го оставя.
Извън темата
А за в бъдеще като си добавя в сорса горещия фикс, който съм направил в библиотеките и сорса като цяло, и ако реша да го предоставя отново някъде в интернет, това което съм направил поне ще съм обяснил какво точно съм направил.
Тъй като съм го сглобил вече и качил в един сайт, но работещ за amxmodx 1.8.2, ще си сваля една платформа с инсталиран amxmodx 1.8.2, за да видя дали ще работи и там с тези поправки, които съм направил с твоя помощ.
Тъй като съм го сглобил вече и качил в един сайт, но работещ за amxmodx 1.8.2, ще си сваля една платформа с инсталиран amxmodx 1.8.2, за да видя дали ще работи и там с тези поправки, които съм направил с твоя помощ.
ПС. Ако темата ми е в грешен раздел, понеже я направихме направо за "Помощ в скриптирането" ще помоля да бъде поправена в заглавието и да бъде преместена в правилния раздел
Извинявам се за разводняването на темата, просто не съм се занимавал с PAWN от поне 6-7години и много неща са ми непонятни в 1.8.3
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Помощ със reHLDS и AmxModX 1.8.3
Прав си, преместих я в раздела за скриптиране. На 1.8.2 няма да работи, тъй като ползваш функции които са нови в 1.8.3 (примерно cliet_disconnected). Можеш да добавиш проверка за версия за да работи и на 1.8.2.
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 1 Отговори
- 897 Преглеждания
-
Последно мнение от m0ney
-
- 0 Отговори
- 721 Преглеждания
-
Последно мнение от SteveJobs17
-
- 14 Отговори
- 7842 Преглеждания
-
Последно мнение от Dvstoyanov89
-
- 6 Отговори
- 2088 Преглеждания
-
Последно мнение от OciXCrom
-
- 2 Отговори
- 214 Преглеждания
-
Последно мнение от trasha
-
- 6 Отговори
- 2584 Преглеждания
-
Последно мнение от Franziskaner
-
- 0 Отговори
- 915 Преглеждания
-
Последно мнение от Lofty
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 12 госта