Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Ранодом на рандоме
Ранодом на рандоме
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
Сообщений: 738
Репутация: 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
Сообщений: 738
Репутация: 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
Сообщений: 738
Репутация: 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
Сообщений: 738
Репутация: 61 [ +/- ]
Да можно было итак все понять и самому написать....

Прикрепления: RandomClient.sp(0.9 Kb)
 
Beelzebub Дата: Вторник, 09.10.2012, 12:21:52 | Сообщение # 9
Сообщений: 202
Репутация: 13 [ +/- ]
Не я то понял, может кому то не понятно =3
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Ранодом на рандоме
  • Страница 1 из 1
  • 1
Поиск: