| SourceMod странности/заметки | 
|  | 
| 
| _wS_ | Дата: Суббота, 06.05.2017, 02:00:58 | Сообщение # 1 |  |   | 1
 Похоже если удалить entity, то перед удалением чистится m_iName (targetname).
 
 1. AcceptEntityInput(index, "Kill"); index был здесь "1.0 2.0 3.0" (origin x y z).
 2. Старт трасировки с "1.0 2.0 5.0" до "1.0 2.0 0.0" (по идее entity не должна встретиться лучу).
 3. entity встречается, ну и ладно, но тут интересно то, что удаётся узнать её classname, но в m_iName уже пусто "".
 
 RequestFrame не помогает.
 Пришлось делать CreateTimer(0.15, чтобы entity не встретилась лучу.
 |  |  |  |  | 
| 
| _wS_ | Дата: Суббота, 27.01.2018, 06:54:19 | Сообщение # 2 |  |   | 2
 
 Код X(v[]){
 v[0] += 1;
 PrintToServer("%d", v[0]);
 }
 
 public OnPluginStart()
 {
 xz();
 xz();
 xz();
 }
 
 xz()
 {
 X({2});
 }
 
 // Ожидалось:
 3
 3
 3
 
 // Результат:
 3
 4
 5
 Но если сделать:
 
 
 Код public OnPluginStart(){
 X({2});
 X({2});
 X({2});
 }
 То результат:
 3
 3
 3
 |  |  |  |  | 
| 
| _wS_ | Дата: Воскресенье, 04.03.2018, 12:29:12 | Сообщение # 3 |  |   | 3
 
 Код public OnPluginStart(){
 new Handle:hPack = CreateDataPack();
 WritePackCell(hPack, 1);
 WritePackCell(hPack, 2);
 
 ResetPack(hPack);
 PrintToServer("%d %d", ReadPackCell(hPack), ReadPackCell(hPack)); // Хотели: "1 2". Получили: "2 1".
 
 // Решение:
 ResetPack(hPack);
 new v1 = ReadPackCell(hPack);
 new v2 = ReadPackCell(hPack);
 PrintToServer("%d %d", v1, v2); // "1 2"
 
 CloseHandle(hPack);
 }
 |  |  |  |  | 
| 
| _R1KO_ | Дата: Четверг, 21.06.2018, 22:31:44 | Сообщение # 4 |  |   
|  |  | Сообщений: 200 Репутация: 30 [ +/- ]
 |  | Цитата _wS_ (  )   PrintToServer("%d\n%d", ReadPackCell(hPack), ReadPackCell(hPack));Вероятно форматирование начинается с конца строки (и соответственно с последних аргументов)
 |  |  |  |  | 
| 
| _wS_ | Дата: Пятница, 28.09.2018, 17:56:53 | Сообщение # 5 |  |   | Код Func(a, b) PrintToServer("%d, %d", a, b); // 2, 1 - в обратном порядке
 public OnPluginStart()
 {
 new v = 0;
 Func(++v, ++v);
 }
 |  |  |  |  | 
| 
| _wS_ | Дата: Пятница, 19.10.2018, 01:45:12 | Сообщение # 6 |  |   | Код #define VAR 50
 public OnPluginStart()
 {
 if (VAR < 10) {} // warning 205: redundant code: constant expression is zero.
 // Fix: if (VAR < StringToInt("10")) {}
 }
 
Но так можно:
 
 
 Код #define VAR 50.0
 public OnPluginStart()
 {
 if (VAR < 10.0) {}
 }
 
Ага, это же float, а не int, это же прям всё меняет
  |  |  |  |  | 
| 
| _wS_ | Дата: Понедельник, 22.10.2018, 22:04:59 | Сообщение # 7 |  |   | Код PrintToServer("-> %d", StrContains("SMtiSeryozno?", "", false));// -> 0
Что? ..
 |  |  |  |  | 
| 
| _wS_ | Дата: Понедельник, 22.10.2018, 22:10:52 | Сообщение # 8 |  |   | Код new Handle:kv = CreateKeyValues("");KvJumpToKey(kv, "chat", true);
 KvSetNum(kv, "x", 1);
 
 decl String:s[12];
 s[0] = 0;
 KvGetSectionName(kv, s, sizeof(s));
 PrintToServer("-> '%s'", s);
 
 CloseHandle(kv);
-> 'Chat'
 Да да, меняй регистр символов как тебе захочется.
 Лучше использовать SMCParser.
 |  |  |  |  | 
| 
| _wS_ | Дата: Вторник, 06.09.2022, 01:10:43 | Сообщение # 9 |  |   | Код public void OnPluginStart(){
 char s[] = "abc";
 PrintToServer("'%s'", s[1]); // "bc" OK
 PrintToServer("'%s'", s[1] ? s[1] : s[1]); // "b" FAIL
 
 // Решение:
 PrintToServer("'%s'", s[s[0] ? 1 : 1]); // "bc"
 }
 
 Код // Так работает.public void OnPluginStart()
 {
 char a[] = "aa";
 char b[] = "bb";
 
 int i = 0;
 PrintToServer("'%s'", i ? a : b]); // "bb" OK
 }
 |  |  |  |  | 
| 
| _wS_ | Дата: Вторник, 06.09.2022, 01:16:13 | Сообщение # 10 |  |   | После смены карты userid'ы ботов меняются без player_disconnect вызова (userid'ы игроков не меняются).Получается бот покинул сервер, но не покинул его, ок.
 |  |  |  |  | 
| 
| _wS_ | Дата: Пятница, 16.08.2024, 13:09:45 | Сообщение # 11 |  |   | Код void A(){
 PrintToServer("1");
 }
 
 public void OnPluginStart()
 {
 //PrintToServer(A() ? "2" : "3"); // warning 209: function "A" should return a value
 
 if (A()) { // No errors
 PrintToServer("2");
 } else {
 PrintToServer("3");
 }
 }
 
 // 1
 // 3
 
  |  |  |  |  | 
| 
| _wS_ | Дата: Пятница, 06.09.2024, 19:49:08 | Сообщение # 12 |  |   | Код char[] S(){
 static char s[] = "b";
 return s;
 }
 
 void V()
 {
 int i = 0;
 i++;
 i++;
 i++;
 i++;
 PrintToServer("%s", i ? "a" : S()); // [SM] Exception reported: Instruction contained invalid parameter
 }
 
 public void OnPluginStart()
 {
 V();
 }
 Это в этом маленьком коде видно место ошибки, но если вы вызываете функцию с большим кол-вом строк кода и вызывающий ошибку код где-то внизу, то найти такую ошибку сложно. Лог пытается пожаловаться на строку, где вызывается проблемная функция, а когда вы пытаетесь добавить пошаговый дебаг в этой функции, то ничего не работает, не PrintTo, не LogTo, и удачи вам в поисках, говорит SM. Мне лог пожаловался на строку "return Plugin_Handled", хотя вызов проблемной функции находился на 3 строки выше.
 
 Так тоже не работает:
 
 
 Код static char s[] = "a";PrintToServer("%s", i ? s : S()); // [SM] Exception reported: Instruction contained invalid parameter
 Так работает:
 
 
 Код char[] X(){
 static char s[] = "x";
 return s;
 }
 
 PrintToServer("%s", i ? X() : S());
 |  |  |  |  |