Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Мнение от LoShIaA » 06 Окт 2017, 17:02

Здравейте. Понеже се чудих къде да пусна темата и не намерих подходящо място я пускам тук. Днес си търсих по-нов плъгин от добре познатия custom sky и намерих един https://dev-cs.ru/threads/993/, но отдолу в коментарите имаше даден друг. Работата, която искам да върши е да слага на всяка карта, която пусна произволно небе от няколкото, които ще сложа в кода. Изобщо някой от двата кода може ли да изпълни тази функция и как?

Код номер едно:

Код за потвърждение: Избери целия код

#include <amxmodx>

#pragma semicolon 1

new const SKYNAME[] = "desert"; // skybox name

new g_SkyName;

public plugin_precache() {
	register_plugin("Sky change helper", "0.1", "AMXX.Shop");
	new const SKYNAME_POSTFIXES[][] = {"bk", "dn", "ft", "lf", "rt", "up"};
	new Buffer[96];
	for(new i; i < sizeof SKYNAME_POSTFIXES; i++) {
		formatex(Buffer, charsmax(Buffer), "gfx/env/%s%s.tga", SKYNAME, SKYNAME_POSTFIXES[i]);
		if(!file_exists(Buffer)) {
			format(Buffer, charsmax(Buffer), "File ^"%s^" not found", Buffer);
			set_fail_state(Buffer);
		}
		precache_generic(Buffer);
	}
	g_SkyName = get_cvar_pointer("sv_skyname");
}

public plugin_cfg() {
	set_pcvar_string(g_SkyName, SKYNAME);
}
Сега в този код небесата се променят от тук: new const SKYNAME[] = "desert"; // skybox name, ако сложа още няколко такива реда ще върти ли небесата или ще дава грешка или пък ще използва само първи ред?

Код номер две:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <reapi>

#pragma semicolon 1

enum _:SKY_DATA_SIZE {
    szMapName[32],
    szSkyName[32]
}

new const ENV_DATA[][] = {"bk", "dn", "ft", "lf", "rt", "up"};

new const SKY_DATA_LIST[][SKY_DATA_SIZE] = {
    {"de_dust2",            "gmf_de_dust_9"},
    {"de_dust",                "gmf_de_dust_9"},
    {"awp_dust",            "gmf_awp_india_1"},
    {"awp_india",            "gmf_awp_india_1"},
    {"cs_assault",            "gmf_cs_assault_1"},
    {"cs_assault_1337",        "gmf_cs_assault_1"},
    {"cs_italy",            "gmf_cs_italy_1"},
    {"cs_mansion",            "gmf_cs_mansion_1"},
    {"cs_office",            "gmf_cs_office_1"},
    {"de_aztec",            "gmf_de_aztec_1"},
    {"de_cbble",            "gmf_de_cbble_1"},
    {"de_clan1_mill",        "gmf_de_clan1_mill_1"},
    {"de_dust2002",            "gmf_de_dust2002_1"},
    {"de_inferno",            "gmf_de_inferno_1"},
    {"de_mirage",            "gmf_de_mirage_1"},
    {"de_nuke",                "gmf_de_nuke_1"},
    {"de_train",            "gmf_de_train_1"},
    {"de_tuscan",            "gmf_de_tuscan_1"},
    {"de_westwood",            "gmf_de_westwood_1"}
};

public plugin_precache() {
    register_plugin("Sky Setting", "2.0", "Javekson");

    new szCurrentMapName[32], szSetSkyName[32];
    rh_get_mapname(szCurrentMapName, charsmax(szCurrentMapName), MNT_TRUE);
    for(new i; i < sizeof SKY_DATA_LIST; i++) {
        if(equal(szCurrentMapName, SKY_DATA_LIST[i][szMapName])) {
            formatex(szSetSkyName, charsmax(szSetSkyName), SKY_DATA_LIST[i][szSkyName]);
            break;
        }
    }
    
    for(new i, szFile[64]; i < sizeof ENV_DATA; i++) {
        formatex(szFile, charsmax(szFile), "gfx/env/%s%s.tga", szSetSkyName, ENV_DATA[i]);
        if(file_exists(szFile))
            precache_generic(szFile);
        else {
            szSetSkyName[0] = 0;
            return PLUGIN_HANDLED;
        }
    }
    if(szSetSkyName[0]) set_cvar_string("sv_skyname", szSetSkyName);
    return PLUGIN_HANDLED;
}
До колкото виждам е написан под reapi, но самият код по удачен ли е? И има ли начин как да направя желаното от мен? Тук виждам, че има опция за задаване на конкретно небе на дадена карта. {"de_dust2", "gmf_de_dust_9"}, ако добавя два реда с една и съща карта, но различно небе какъв ще е крайният резултат?

EDIT: нямам никва идея защо изтеглих 4 небета и имам 1, което съм теглил преди години и квото и да правя и да струвам, който и плъгин да ползвам от двата само тва, което ми е старото само то тръгва :@.
Последно промяна от OciXCrom на 06 Окт 2017, 20:11, променено общо 1 път.
Причина: Преместена тема!

Аватар
DaRk_StyLe
Извън линия
Потребител
Потребител
Мнения: 264
Регистриран на: 26 Окт 2016, 12:40
Се отблагодари: 11 пъти
Получена благодарност: 33 пъти

Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Мнение от DaRk_StyLe » 06 Окт 2017, 21:09

Код за потвърждение: Избери целия код

#include <amxmodx>

new const skies[][] = 
{
	"sky1",
	"sky2",
	"sky3" // <-- след името на последното небе НЕ СЕ поставя запетая!
}

public plugin_precache()
{
	set_cvar_string("sv_skyname", skies[random(sizeof(skies))])
}

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Мнение от LoShIaA » 06 Окт 2017, 23:12

Мерси. Утре ще го пробвам, а пътя до самите текстури къде се описва? Там където се пише името на небето направо с пътя до него ли да опиша?

Edint: нищо неуспях да направя с този код от Dark

Аватар
DaRk_StyLe
Извън линия
Потребител
Потребител
Мнения: 264
Регистриран на: 26 Окт 2016, 12:40
Се отблагодари: 11 пъти
Получена благодарност: 33 пъти

Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Мнение от DaRk_StyLe » 09 Окт 2017, 07:07

Извинявай, не съобразих, че не разбираш от скриптиране и няма да можеш да довършиш кода сам.

Код за потвърждение: Избери целия код

#include <amxmodx>

// тук добавяш имената на небетата, като не поставяш запетая след последното име
new const skyNames[][] =
{
	"de_storm",
	"morningdew",
	"blue",
	"city",
	"cx"
}

public plugin_precache()
{
	register_plugin("Random Sky", "1.0", "DaRk_StyLe")
	
	new i, path[64]
	
	for(i = 0; i < sizeof(skyNames); i++)
	{
		formatex(path, charsmax(path), "gfx/env/%sbk.tga", skyNames[i])
		precache_generic(path)
		
		formatex(path, charsmax(path), "gfx/env/%sdn.tga", skyNames[i])
		precache_generic(path)
		
		formatex(path, charsmax(path), "gfx/env/%sft.tga", skyNames[i])
		precache_generic(path)
		
		formatex(path, charsmax(path), "gfx/env/%slf.tga", skyNames[i])
		precache_generic(path)
		
		formatex(path, charsmax(path), "gfx/env/%srt.tga", skyNames[i])
		precache_generic(path)
		
		formatex(path, charsmax(path), "gfx/env/%sup.tga", skyNames[i])
		precache_generic(path)
	}
	
	set_cvar_string("sv_skyname", skyNames[random(sizeof(skyNames))])
}

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Сравнение на два кода за смяна на небеса. Кой е по удачен за ползване?

Мнение от LoShIaA » 09 Окт 2017, 13:18

Мерси, кода работи както трябва.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта