Заказать Плагин Контакты Поиск

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

  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Типы переменных (Float, String, Handle, bool)
Типы переменных
Vitaminoz Дата: Понедельник, 24.02.2014, 21:14:53 | Сообщение # 16
Сообщений: 142
Репутация: 1 [ +/- ]
Прошу прощения не совсем верно сформулировал. Запрос кидаю в глобальные функции.
 
Valeriks Дата: Пятница, 01.08.2014, 21:57:22 | Сообщение # 17
Сообщений: 101
Репутация: 3 [ +/- ]
Подскажите пожалуйста, если мы делаем
Код
new bool:Player[MAXPLAYERS+1];

то это для каждого игрока будут хранится значения true|false ?
И вообще, можно использовать [MAXPLAYERS+1] для bool ?
 
horr0r Дата: Пятница, 01.08.2014, 22:06:49 | Сообщение # 18
Сообщений: 149
Репутация: 40 [ +/- ]
Valeriks, да. Можно.
И это будет "как-бы" для каждого игрока.
А без "как-бы", это будет для каждой ячейки массива.


Сообщение отредактировал horr0r - Пятница, 01.08.2014, 22:07:45
 
Valeriks Дата: Пятница, 01.08.2014, 22:08:31 | Сообщение # 19
Сообщений: 101
Репутация: 3 [ +/- ]
Цитата horr0r ()
да. Можно.

Благодарю.
 
www22 Дата: Вторник, 16.10.2018, 09:02:47 | Сообщение # 20
Сообщений: 21
Репутация: 0 [ +/- ]
Что то голову сломал , как сделать : вообщем у меня есть 2 целых числа, после деления 1 на 2 , конечно же может получится число с остатком . Но мне надо опять получить его целым . Вот как быть , что то никак не пойму ..
Цитата
[float rnum,knum,dnum;
knum=GetEventInt(event, "attacker");
dnum=GetEventInt(event, "victim");
rnum=RoundFloat(knum/dnum);
snum=knum/dnum;
PrintToChatAll("\x04RatioKillsDeaths = %f - %d",rnum,snum);

Да и вот такой вопрос - выделили красным - такие операции внутри функции вообще возможен в sourcemod(pawn).
Или отдельно нужно делать ?
P.s. это типа мини статистики фрагов/смертей за раунд/карту.

Добавлено (16.10.2018, 09:15:01)
---------------------------------------------
да и еще вопрос с этими числами - Float , которые используют для чисел с плавающей точкой (небольших). К примеру в условии , какое число писать с точкой или можно и без . К примере мне надо сравнить число "3" с полученным результатом . Вот число 3 , как писать 3.0 или можно просто "3" ?



Сообщение отредактировал www22 - Вторник, 16.10.2018, 09:09:52
 
_wS_ Дата: Вторник, 16.10.2018, 09:45:01 | Сообщение # 21
Цитата www22 ()
Вот число 3 , как писать 3.0 или можно просто "3" ?

При сравнении двух переменных у них должен быть одинаковый тип (не только сравнении, а если складываешь их и тд, любые операции).
Так точно должно работать:

Код
new knum = GetEventInt(event, "attacker");
new dnum = GetEventInt(event, "victim");
new Float:rnum = dnum > 0 ? RoundFloat(float(knum) / float(dnum)) : 0.0;
snum = dnum > 0 ? (knum / dnum) : 0;
PrintToChatAll("\x04RatioKillsDeaths = %.1f - %d", rnum, snum);

Учитывай что на 0 делить нельзя, а то ошибка будет.
 
www22 Дата: Вторник, 16.10.2018, 10:42:44 | Сообщение # 22
Сообщений: 21
Репутация: 0 [ +/- ]
Цитата _wS_ ()
При сравнении двух переменных у них должен быть одинаковый тип

То есть и записывать их надо так же , по тому типу который объявлен ?!
Я правильно понимаю ?!
То есть если число float = 3.0 если int = 3 в условии . Просто если написать "3" для сравнения float , он это учтет ?!
Цитата _wS_ ()
Учитывай что на 0 делить нельзя, а то ошибка будет.

это я знаю , вот только когда прибавлял 1 к числу когда целые были числа выводилась , useid=0 , почему ..
 
_wS_ Дата: Вторник, 16.10.2018, 11:01:40 | Сообщение # 23
Тебе тяжело самому всё это проверить?
Я увидел что можно смешивать переменные разных типов, получается можно, но во избежание ошибок я всегда приравниваю типы.

Код
public OnPluginStart()
{
    new x = 1;
    new Float:y = 1.0;
    PrintToServer("%d == %f (%s)", x, y, x == y ? "yes" : "no");
    
    y = 1.01;
    PrintToServer("%d == %f (%s)", x, y, x == y ? "yes" : "no");
    
    x = 5;
    y = 2.5;
    PrintToServer("%d / %f = %f", x, y, x / y);
    PrintToServer("%f / %f = %f", float(x), y, float(x) / y);
}


Цитата
] sm plugins reload b
1 == 1.000000 (yes)
1 == 1.009999 (no)
5 / 2.500000 = 2.000000
5.000000 / 2.500000 = 2.000000
 
www22 Дата: Вторник, 16.10.2018, 11:34:26 | Сообщение # 24
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_, да мне еще сложно что то написать самому .. вон и так даже с этими переменными тут попал ..
А почему спросил , я думал ты знаешь , ты же уже давно в скриптинге , вдруг сам сталкивался .. Вот и спросил..
Спасибо !!!


Сообщение отредактировал www22 - Вторник, 16.10.2018, 11:51:56
 
_wS_ Дата: Вторник, 16.10.2018, 12:51:26 | Сообщение # 25
klas
 
www22 Дата: Вторник, 16.10.2018, 17:37:31 | Сообщение # 26
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_, блин вот я замарочился с этим Float , можно же было проще сделать , через целое число, типа такого
Цитата _wS_ ()
new dnum = GetEventInt(event, "victim") *3(коэфф);
И потом уже сравнивать - стареем похоже уже :)))


Сообщение отредактировал www22 - Вторник, 16.10.2018, 17:38:28
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Типы переменных (Float, String, Handle, bool)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: