Tuesday, 14-05-2024, 0:56 AM

Logged in as Guest | Group "Guests"Welcome Guest | RSS
 
[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 1
  • 1
Forum » Hλlf-Life: SDK » Half-Life 1 Coding / Tutorials » [HL1] Поддръжка на Mapconfig
[HL1] Поддръжка на Mapconfig
HorusDate: Friday, 25-12-2020, 4:52 PM | Message # 1
Generalissimo
Group: Administrators
Messages: 14
Awards: 0
Reputation: 0
Status: Offline
Оригинален урок: Alex_Gordon
Изходен код: Spirit of Half-Life


И така, представете си ситуацията: правите мод за GoldSRC. Във вашия мод има тонове настройки както и шейдъри, подробни текстури, светещи, размазване в движение и т.н. Но в мода има една тъмна карта, на която всички тези ефекти са безполезни и само консумират памет. Как мога да ги деактивирам? Да се ​​покаже съобщение като „Потребител, въведете това и онова в конзолата!“? Но някои потребители са толкова зле, че не знаят какво е конзола. Оставянето на тези ефекти върху тази карта = по-ниска производителност безплатно. Или може би се откажете от мода и отидете да четете Шекспир? Хм, добър вариант, но модът също е нещо добро. И така, системата MapConfig от SoHL ни идва на помощ.
Той е подреден по следния начин: в папката mod се създава папка mapconfigи създава cfg файлове, съответстващи на имената на картите. При превключване от предишната карта към посочения cfg се изпълнява и се изпълняват всички команди, записани в нея. Такава система беше не само в SoHL, но и в HLFX.
Сега как да го приложим.
На сървъра отворете файла client.cpp и слезете до функцията void ParmsChangeLevel (void) . Той е отговорен за това, което се случва, когато потребителят премине през trigger_changelevel.
SoHL има следния код:

Code    
if(!(pEntity->v.flags & FL_FAKECLIENT)) // Check that client isn't a bot, for future using
{
// load mapname.cfg
char szCommand[128];
sprintf(szCommand, "exec mapconfig/%s.cfg\n", STRING(gpGlobals->mapname));
CLIENT_COMMAND(pEntity, szCommand);
}

Но първо, той е във функцията ClientConnect и не ни устройва. И второ, ако го
натиснете във функцията void ParmsChangeLevel (void) без промени, компилаторът ще генерира грешка. И така, нека го трансформираме в следната форма:

Code     
// load mapname.cfg
char szCommand[128];
sprintf(szCommand, "exec mapconfig/%s.cfg\n", STRING(gpGlobals->mapname));
SERVER_COMMAND(szCommand);

И го вмъкнете в void ParmsChangeLevel (void) . Ние компилираме, създаваме конфигурации и се радваме!

https://u.to/n5GjGg


 
Forum » Hλlf-Life: SDK » Half-Life 1 Coding / Tutorials » [HL1] Поддръжка на Mapconfig
  • Page 1 of 1
  • 1
Search:

Copyright MyCorp © 2024 Powered by uCoz