Ранодом на рандоме
|
|
Naykon
|
Дата: Среда, 03.10.2012, 18:40:11 | Сообщение # 1 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Ребет мучался-мучал.. Code #include <sourcemod> #include <cstrike> #include <sdktools> #include <sdktools_entoutput> #include <sdktools_functions> #include <sdkhooks>
public OnPluginStart() { HookEvent("round_start", Round_Start); } new client[MAXPLAYERS+1]; new jo; public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { jo = 2; new cl = GetClientOfUserId(GetEventInt(event, "userid")); for (new i = 1; i <= MaxClients; i++) { client[i] = cl; if (client[i] != GetRandomClient()) { if (jo != 0) { client[i] = GetRandomClient(); PrintToChatAll("%N = GetRandomClient()", client[i]); new my_array[5] = {3, 9, 1, 7, 5}; SortIntegers(my_array, 5, Sort_Random); PrintToChatAll("%d - %N", my_array[i], client[i]); jo -= 1; } } } }
//Выбор игроков рандомом GetRandomClient() { new indexes[MaxClients+1], players = 0; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2) { indexes[players++] = i; } } if (players > 0) return indexes[GetRandomInt(0, players-1)]; return 0; }
Нужно чтоб Рандомом 2 игрокам на сервере которые за Т выдавало по значению от 2 до 5, значения могут совпадать у обоих. Но нельзя допустить чтобы Рандом выбрал 2 раза 1 и того же игрока, всегда должно быть минимут 2 игрока с значением. Т.е В любом случае 2 разных игрока должны получить по значению (2-5).Добавлено (03.10.2012, 18:36:50) --------------------------------------------- + еще вопросик. - Как отловить победу Т ? или что-то в этом роде. Добавлено (03.10.2012, 18:40:11) --------------------------------------------- + Немного не догоняю как сделать действие над игроком если он сменил команду?? GetClientTeam это получаем где игрой сейчас, а как получить момент есть он был за СТ а перешол в Т??
|
|
| |
Scarface_slv
|
Дата: Среда, 03.10.2012, 21:38:41 | Сообщение # 2 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
2. Code HookEvent("round_end" new win = GetEventInt(event, "win");//Отлов индекса выигравший команды 3. Code HookEvent("player_team".... GetEventInt(event, "team") > 1) //Отлов перехода в другую команду
|
|
| |
Naykon
|
Дата: Среда, 03.10.2012, 23:59:57 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
2. Code public Round_End(Handle:event, const String:name[], bool:dontBroadcast) { new cli = GetClientOfUserId(GetEventInt(event, "win")); if (IsPlayerInGame(cli) && GetClientTeam(cli) == 2) { PrintToChat(cli, "Держи конфетку"); } } Чет не понял...
В 3 варианте тоже...
Как их применять раньше не сталкивался((
|
|
| |
Scarface_slv
|
Дата: Четверг, 04.10.2012, 08:45:03 | Сообщение # 4 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
2. Code public Round_End(Handle:event, const String:name[], bool:dontBroadcast) { new winner = GetEventInt(event, "winner"); if(winner == 2) PrintToChatAll("\x03Выграл Т индекс команды:%d", winner); else if(winner == 3) PrintToChatAll("\x03Выграл CТ индекс команды:%d", winner); } 3. Code public Player_Team(Handle:event, const String:name[], bool:dontBroadcast) { if (GetEventInt(event, "team") == 2) { new client = GetClientOfUserId(GetEventInt(event, "userid")); PrintToChatAll("\x03 %N Перешол за Т", client); } } вроде так.
Сообщение отредактировал Scarface_slv - Четверг, 04.10.2012, 08:45:41 |
|
| |
Naykon
|
Дата: Воскресенье, 07.10.2012, 23:45:02 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Ответте плиз на 1 вопросс....Добавлено (05.10.2012, 17:12:28) --------------------------------------------- поднимаю тему.. проблема не решена(( Добавлено (07.10.2012, 23:45:02) --------------------------------------------- Людииииии первый вопрос оч прошу..
|
|
| |
Scarface_slv
|
Дата: Понедельник, 08.10.2012, 07:23:23 | Сообщение # 6 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Попробуй получить два раза игрока с рандома с разными переменными target и taget2 например и если они совпадают он сново отправляется в рандом чтоб снова получить например target2 и сново сравнить target с target2, а если они не совпадают то присвоить им значение от 2 до 5 с функцией рандома, наверно массив нужен чтоб присвоить значение)
Это чисто предположение как это возможно сделать, может можно лучше...
Сообщение отредактировал Scarface_slv - Понедельник, 08.10.2012, 07:29:12 |
|
| |
Beelzebub
|
Дата: Понедельник, 08.10.2012, 22:56:54 | Сообщение # 7 |
|
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Quote (Scarface_slv) Попробуй получить два раза игрока с рандома с разными переменными target и taget2 например и если они совпадают он сново отправляется в рандом чтоб снова получить например target2 и сново сравнить target с target2, а если они не совпадают то присвоить им значение от 2 до 5 с функцией рандома, наверно массив нужен чтоб присвоить значение)
Лучше показывать примеры чем объяснять :)
|
|
| |
Scarface_slv
|
Дата: Вторник, 09.10.2012, 11:53:53 | Сообщение # 8 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Да можно было итак все понять и самому написать....
Гости не могут скачивать файлы
|
|
|
| |
Beelzebub
|
Дата: Вторник, 09.10.2012, 12:21:52 | Сообщение # 9 |
|
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Не я то понял, может кому то не понятно =3
|
|
| |