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

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

  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Random (Как использовать?)
Random
pro-health Дата: Понедельник, 13.10.2014, 15:34:48 | Сообщение # 16
Сообщений: 188
Репутация: 5 [ +/- ]
Может хватит выяснять отношения?

Добавлено (13.10.2014, 15:34:48)
---------------------------------------------

Цитата pro-health ()
Цитата Sallcom писал(а):
#include <sourcemod>        

new String:sTextureList[][] = {       
      "effects/gunshipmuzzle.vmt",       
      "effects/yellowflare.vmt",       
      "effects/combineshield/comshieldwall.vmt",       
      "effects/combine_binocoverlay.vmt",       
      "effects/bluespark.vmt"    
};       

public OnMapStart(){    
      PrintToChatAll("%s", sTextureList[GetRandomInt(0, sizeof(sTextureList)-1)]);    
}

Sallcom, понял а как сделать это с командой r_screenoverlay
Так как то вроде....
Код
FakeClientCommand("r_screenoverlay %s", sTextureList[GetRandomInt(0, sizeof(sTextureList)-1)]);     
 
king(rus) Дата: Понедельник, 13.10.2014, 15:50:39 | Сообщение # 17
Сообщений: 109
Репутация: 2 [ +/- ]
Цитата BarD ()
king(rus), R1KO передает:

Прикрепления: 9980089.jpg(33Kb)


Эх.. и сасать вам

Прикрепления: 4772882.png(6.4 Kb)


Сообщение отредактировал king(rus) - Понедельник, 13.10.2014, 16:48:51
 
Sallcom Дата: Понедельник, 13.10.2014, 17:04:58 | Сообщение # 18
Сообщений: 206
Репутация: 31 [ +/- ]
Цитата king(rus) ()
Эх.. и сасать вам

Удачи тебе и "быдло" кодеру, который даже не знает, как работает функция sizeof(...).

А для наглядности, держи скрины.
Как мы уже знаем sizeof(sTextureList) вернет нам 5, то есть:


Так как ты и твой "знакомый" говорит, что -1 делать не нужно, тогда представим, что рандомом нам выпал sizeof, который в конечном итоге будет равен 5, то пробуем скомпилировать вызов 5 элемента.

Для тех, кто не знает, в ошибке написано: "Индекс выходит за границы массива".

И на счет зарезервированного символа '\0', данный символ есть именно в строке и явно его вызвать нельзя, т.е. если у тебя будет вот так:
Код

new String:sValue[8];


Ты не сможешь скомпилировать плагин, если там будет вот такая запись:
Код

PrintToServer("%s", sValue[8]);

Ибо выведет такую же ошибку.

Я, думаю, что R1KO имел в виду то, что при цикле for, почти всегда пишется просто sizeof(...) без минуса, потому что зачастую там условие i < sizeof(...).

Холивар на этом окончен. Идите учите теорию, и прежде чем доказывать что-либо, сначала попробуйте реализовать то, о чем говорите.

Прикрепления: 0612700.png(15.7 Kb) · 4193165.png(23.5 Kb)


Сообщение отредактировал Sallcom - Понедельник, 13.10.2014, 17:23:08
 
king(rus) Дата: Понедельник, 13.10.2014, 17:29:19 | Сообщение # 19
Сообщений: 109
Репутация: 2 [ +/- ]
Да, верно.


Сообщение отредактировал king(rus) - Понедельник, 13.10.2014, 17:32:28
 
Sallcom Дата: Понедельник, 13.10.2014, 17:33:14 | Сообщение # 20
Сообщений: 206
Репутация: 31 [ +/- ]
Ах да, похоже он это про тебя, а не про нас.
Последние сообщения почитай)

И даже если бы это был размер строки, я уже написал выше, что нельзя вызвать элемент равный данному размеру.

Прикрепления: 1406060.jpg(27.2 Kb)


Сообщение отредактировал Sallcom - Понедельник, 13.10.2014, 17:41:26
 
хвостег Дата: Понедельник, 13.10.2014, 18:21:25 | Сообщение # 21
Сообщений: 161
Репутация: 53 [ +/- ]
Цитата king(rus) ()
На счёт sizeof(). Написал бы ты на хлмод - тебя бы разнесли в пух и прах.

Для тех кто в танке засел намертво, повторю еще раз.
sizeof(...) - возвращает длину массива, будь то строковый, числовой или строка (строка - массив байт).
И в завершении кури исходник.

Код

new String:Str[10];

new String:Array[][] = {
  "1", "2", "3", "4", "5",
  "6", "7", "8", "9", "10"
};

new NumArray[] = {
  1, 2, 3, 4, 5,
  6, 7, 8, 9, 10
};

public OnPluginStart()
{
  PrintToServer("******************Stage 1*********************");
  Str = "12345";
  PrintToServer("String: %s", Str);
  PrintToServer("sizeof(Str): %d | strlen(Str): %d", sizeof(Str), strlen(Str));
   
  for(new i = 0; i < sizeof(Str); i++)
  {
   PrintToServer("Byte[%d] Hex: %02X", i, (Str[i] & 0xFF));
  }
   
  PrintToServer("******************Stage 2*********************");
  Str = "0123456789"
  PrintToServer("String: %s", Str);
  PrintToServer("sizeof(Str): %d | strlen(Str): %d", sizeof(Str), strlen(Str));
   
  for(new i = 0; i < sizeof(Str); i++)
  {
   PrintToServer("Byte[%d] Hex: %02X", i, (Str[i] & 0xFF));
  }
   
  PrintToServer("******************Stage 3*********************");
  PrintToServer("sizeof(Array): %d", sizeof(Array));
   
  for(new i = 0; i < sizeof(Array); i++)
  {
   PrintToServer("String Array Item[%d]: %s", i, Array[i]);
  }
   
  PrintToServer("******************Stage 4*********************");
  PrintToServer("sizeof(NumArray) : %d", sizeof(NumArray));
   
  for(new i = 0; i < sizeof(NumArray); i++)
  {
   PrintToServer("Number Array Item[%d]: %d", i, NumArray[i]);
  }
  PrintToServer("********************End***********************");
}
 
Sallcom Дата: Понедельник, 13.10.2014, 18:31:41 | Сообщение # 22
Сообщений: 206
Репутация: 31 [ +/- ]
Цитата хвостег ()
sizeof(...) - возвращает длину массива

Хвостег, второй раз уже так пишешь)))
Мне кажется, правильней будет сказать, что sizeof(...) возвращается размер массива, ибо длину строки(это тоже массив) мы узнаем при помощи strlen(...).


Сообщение отредактировал Sallcom - Понедельник, 13.10.2014, 18:32:18
 
pro-health Дата: Понедельник, 13.10.2014, 18:50:51 | Сообщение # 23
Сообщений: 188
Репутация: 5 [ +/- ]
Народ а мне чё кто то поможет?
 
Sallcom Дата: Понедельник, 13.10.2014, 18:53:55 | Сообщение # 24
Сообщений: 206
Репутация: 31 [ +/- ]
Цитата pro-health ()
Народ а мне чё кто то поможет?


Код

new String:sTextureList[][] = {    
       "effects/gunshipmuzzle.vmt",    
       "effects/yellowflare.vmt",    
       "effects/combineshield/comshieldwall.vmt",    
       "effects/combine_binocoverlay.vmt",    
       "effects/bluespark.vmt"   
};   


Чтобы вызвать случайный элемент из этого списка, пиши sTextureList[GetRandomInt(0, sizeof(sTextureList)-1)]
 
хвостег Дата: Понедельник, 13.10.2014, 21:43:40 | Сообщение # 25
Сообщений: 161
Репутация: 53 [ +/- ]
Цитата Sallcom ()
Мне кажется, правильней будет сказать, что sizeof(...) возвращается размер массива, ибо длину строки(это тоже массив) мы узнаем при помощи strlen(...).

Как не перефразируй, смысл один
sizeof() - вернет длину\размер массива, а
strlen() - количество байт до нуль-терминатора.
хепи енд.


Сообщение отредактировал хвостег - Понедельник, 13.10.2014, 21:50:18
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Random (Как использовать?)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: