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

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
blazz3rzbg
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 50
Регистриран на: 22 Фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 12 пъти
Получена благодарност: 16 пъти

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

Мнение от blazz3rzbg » 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 на 15 Май 2019, 01:17, променено общо 1 път.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

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

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

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

Аватар
blazz3rzbg
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 50
Регистриран на: 22 Фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 12 пъти
Получена благодарност: 16 пъти

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

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

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

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

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

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

Мнение от OciXCrom » 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;
}
Както виждаш, проверява дали индексът е валиден и дали играчът е в сървъра преди да прави другите проверки.

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

Обратно към “Заявки за плъгини”

Кой е на линия

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