Преработка на плъгин "Leader"

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Преработка на плъгин "Leader"

Мнение от blazz3rzbg NSFW » 14 май 2019, 21:28

пробвай да замениш тази функция

Код: Избери всички

SetLeader(id)
{
    new iPlayers[32], NumPlayers
    get_players(iPlayers, NumPlayers, "")
    give_item(id,"weapon_deagle")
    cs_set_user_bpammo(id,CSW_DEAGLE,35)
    give_item(id,"weapon_knife")
    give_item(id,"weapon_hegrenade")
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_smokegrenade")
    cs_set_user_bpammo(id,CSW_HEGRENADE,3)
    cs_set_user_bpammo(id,CSW_FLASHBANG,3)
    cs_set_user_bpammo(id,CSW_SMOKEGRENADE,3)
    //set_user_health(id,  100 + get_pcvar_num(pHp) * (NumPlayers-1))

    do_glow(id)

    get_user_name(id, g_iName[id], 31)

    if(get_user_team(id) == 1) {
        rgb[0] = 255;
        rgb[1] = 0;
        rgb[2] = 0;
    }
    else {
        rgb[0] = 0;
        rgb[1] = 0;
        rgb[2] = 255;
    }
}
с тази

Код: Избери всички

SetLeader(id)
{
    //new iPlayers[32], NumPlayers
    //get_players(iPlayers, NumPlayers, "")

    if(!is_user_alive(id)) return;


    give_item(id,"weapon_deagle")
    cs_set_user_bpammo(id,CSW_DEAGLE,35)
    give_item(id,"weapon_knife")
    give_item(id,"weapon_hegrenade")
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_smokegrenade")
    cs_set_user_bpammo(id,CSW_HEGRENADE,3)
    cs_set_user_bpammo(id,CSW_FLASHBANG,3)
    cs_set_user_bpammo(id,CSW_SMOKEGRENADE,3)
    //set_user_health(id,  100 + get_pcvar_num(pHp) * (NumPlayers-1))

    do_glow(id)

    get_user_name(id, g_iName[id], 31)

    if(get_user_team(id) == 1) {
        rgb[0] = 255;
        rgb[1] = 0;
        rgb[2] = 0;
    }
    else {
        rgb[0] = 0;
        rgb[1] = 0;
        rgb[2] = 255;
    }
}
Последна промяна от blazz3rzbg NSFW на 15 май 2019, 01:17, променено общо 1 път.

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5193
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 66 пъти
Получена благодарност: 513 пъти
Години: 21
Контакти:

Преработка на плъгин "Leader"

Мнение от OciXCrom TM » 15 май 2019, 01:08

@blazz3rzbg - не е нужно да проверяваш дали играчът е конектиран след като вече си проверил дали е жив, понеже is_user_alive включва същата проверка както и is_user_connected.

Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Преработка на плъгин "Leader"

Мнение от blazz3rzbg NSFW » 15 май 2019, 01:13

OciXCrom написа:
15 май 2019, 01:08
@blazz3rzbg - не е нужно да проверяваш дали играчът е конектиран след като вече си проверил дали е жив, понеже is_user_alive включва същата проверка както и is_user_connected.
това беше добре да го зная понеже имаше тема в alliedmodders в която някои хора получаваха invalid player с проверка ако е жив.. по принцип няма логика ако е жив да не е в сървъра но добавям и проверка дали е connected за всеки случай

може би в новите amxx версии това е фикснато

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5193
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 66 пъти
Получена благодарност: 513 пъти
Години: 21
Контакти:

Преработка на плъгин "Leader"

Мнение от OciXCrom TM » 15 май 2019, 15:07

blazz3rzbg написа:
15 май 2019, 01:13
OciXCrom написа:
15 май 2019, 01:08
@blazz3rzbg - не е нужно да проверяваш дали играчът е конектиран след като вече си проверил дали е жив, понеже is_user_alive включва същата проверка както и is_user_connected.
това беше добре да го зная понеже имаше тема в alliedmodders в която някои хора получаваха invalid player с проверка ако е жив.. по принцип няма логика ако е жив да не е в сървъра но добавям и проверка дали е connected за всеки случай

може би в новите amxx версии това е фикснато
Отвинаги е било така. Грешката сигурно е идвала от другаде. Ето самия C++ код на функцията:

Код: Избери всички

static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */
{
	int index = params[1];

	if (index < 1 || index > gpGlobals->maxClients)
	{
		return FALSE;
	}

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

	if (!pPlayer->ingame)
	{
		return FALSE;
	}

	if (g_bmod_tfc)
	{
		edict_t *e = pPlayer->pEdict;
		if (e->v.flags & FL_SPECTATOR ||
			(!e->v.team || !e->v.playerclass))
		{
			return FALSE;
		}
	}

	return pPlayer->IsAlive() ? TRUE : FALSE;
}
Както виждаш, проверява дали индексът е валиден и дали играчът е в сървъра преди да прави другите проверки.

Отговори

Върни се в “Заявки за плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост