Помогите с выдачей оружия всем!

MIV

Участник
Сообщения
613
Реакции
32
Помогите с выдачей оружия всей команде КТ либо команде Т, либо выдать всем игрокам определенное оружие, с помощью плагина выдается только определенному игроку, как сделать чтоб всей команде, либо всем!?
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
MIV, тебе при каких условиях надо выдавать оружие то?
 

MIV

Участник
Сообщения
613
Реакции
32
Админом, ну просто вот играют на ножах на 35hp к примеру и одной из команд выдать тазеры к примеру или гранаты, но сразу всей команде! Либо всем игрокам, но не прописывать каждому поотдельности!
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
MIV, чем выдаёшь одному? Сделать циклом по всем игрокам и всё.
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Исправленная рабочая версия:
Посмотреть вложение ac-weapontoall.smx

Посмотреть вложение ac-weapontoall.sp

Командой sm_wta <CT/T/ALL> <Weapon>

Список оружия: Оффтоп

Правда у меня в упор не хочет работать, AlmazON, помоги, что с этими клиентами? Сначала на блоке ALL не хотел работать, хотя первые if CT и if T вроде как независимы, теперь или только T или CT.
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
diller110
У тебя ошибка в for(new i = 1; i>GetClientCount(); i++). используй i <= MaxClients
PHP:
// 1 - ALL; 2 - T; 3 - CT
stock Function_GiveWeapon(team, const String:weapon[], const String:info[])
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            if ((GetClientTeam(i) == team) || team == 1)
            {
                if (IsPlayerAlive(i))
                {                
                    GiveWeapon(i, weapon);
                }
            }

            PrintToChat(i, "\x01\x05[SM] \x01%s выдано оружие \x05%s", info, weapon);
        }
    }
}
 

diller110

Добрая душа
Сообщения
353
Реакции
278
The End Is Near..., Ясно.. А почему правильно использовать MaxClients, не лучше ли цикл использовать столько сколько игроков, а не 64 каждый раз?
Или maxclients итак высчитывает кол-во игроков?
 

diller110

Добрая душа
Сообщения
353
Реакции
278
The End Is Near..., Использовал твою функцию выше, там GiveWeapon просто для примера написал, или есть такая функция? (заменил на giveplayeritem)


Оффтоп
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
WeaponToAll v1.0

diller110, чтобы не писать постоянно weapon_:
PHP:
#include <sdktools_functions>

/* Список оружия:

	"glock", "p250", "fiveseven", "deagle", "elite", "hkp2000", "tec9",
	"nova", "xm1014", "mag7", "sawedoff", "m249", "negev", 
	"mp9", "mac10", "mp7", "ump45", "p90", "bizon",
	"famas", "m4a1", "galilar", "ak47", "ssg08",	"aug", "sg556", "awp", "scar20", "g3sg1",
	"taser", "knife", "decoy", "flashbang", "hegrenade", "incgrenade", "molotov", "smokegrenade"  };
*/

public Plugin:myinfo =
{
	name = "WeaponToAll",
	author = "",
	description = "Provides !wta command",
	version = "1.0",
	url = ""
}

public OnPluginStart() {
	RegAdminCmd("sm_wta", Command_WTA, ADMFLAG_KICK, "Gives weapon for all team");
}

public Action:Command_WTA(client, args) {
	if(args < 2) {
		ReplyToCommand(client, "[WTA] Дать оружие: /wta <ct/t/all> <Weapon>");
	} else {
		decl String:team[4];
		GetCmdArg(1, team, 4);
		if (strcmp(team, "ALL", false) == 0) {
			decl String:weapon[14];
			GetCmdArg(2, weapon, 14);
			Function_GiveWeapon(1, weapon, "Всем")
		} else if (strcmp(team, "CT", false) == 0) {
			decl String:weapon[14];
			GetCmdArg(2, weapon, 14);
			Function_GiveWeapon(3, weapon, "Контрам")
		} else if (strcmp(team, "T", false) == 0) {
			decl String:weapon[14];
			GetCmdArg(2, weapon, 14);
			Function_GiveWeapon(2, weapon, "Террористам")
		} else ReplyToCommand(client, "[WTA] Выберите корректную команду: CT, T, ALL");
	}
	return Plugin_Handled;
}

// 1 - ALL; 2 - T; 3 - CT
stock Function_GiveWeapon(team, const String:weapon[], const String:info[])
{
	new i = strlen(weapon)+8;
	decl String:give_weapon[i];
	FormatEx(give_weapon, i, "weapon_%s", weapon);
	for (i = 1; i <= MaxClients; i++) {
		if (IsClientInGame(i) && IsPlayerAlive(i) && (team == 1 || GetClientTeam(i) == team))
		{
			if (GivePlayerItem(i, give_weapon) != -1) PrintToChat(i, "\x01\x05[SM] \x01%s выдано оружие \x05%s", info, give_weapon);
			else break;
		}
	}
}
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
AlmazON
1. Каждый раз получаешь 2 аргумент

2. Цикл не должен пройти у тебя (break остановит цикл ведь полностью, т.е. первый игрок получит оружие и все)

3. Format(weapon, 16, "weapon_%s", weapon) ?

4. Сообщение не все увидят, а лишь те, кто получит оружие

верно. 3. strlen(weapon) + N
 
Последнее редактирование:

MIV

Участник
Сообщения
613
Реакции
32
Скиньте рабочий уже плагин))) или исходник) А можно ли написать менюшку к этому плагину? чтоб выбирать оружие с меню?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
The End Is Near..., Оффтоп
 

MIV

Участник
Сообщения
613
Реакции
32
Скиньте уже верный код!
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Версия скинутая мною в начале, проверенная и протестированная. Возможно там нету плюшек о которых говорят AlmazOn и TEIN, но плагин работает.
 
  • Мне нравится
Реакции: MIV
Сверху Снизу