Скриптинг курилка

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
Хочу использовать так:
Код:
new Float:value = 2.8;
printf("%.1f", value); // выводит 2.7, а должно 2.8
Не должно, оно выводит как ему и положено 2.799999999(9).
Поищи функцию округления до определённого знака после запятой.
Reply

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
Почему значение Float может вот так сбиваться?
Код:
2.200000
2.300000
2.400000
2.500000
2.600000
2.700000
2.799999
2.899999
2.999999
3.099999
Хочу использовать так:
Код:
new Float:value = 2.8;
printf("%.1f", value); // выводит 2.7, а должно 2.8
но по непонятным для меня причинам возникла проблема с float значениями...
Советую ознакомиться с особенностями работы компьютера с float числами: https://habrahabr.ru/post/112953/
Reply

Quote:
Originally Posted by Hawkins
Посмотреть сообщение
Кто сталкивался? Актёр созданный через какое то время сходит со своих координат. Как решит беду?
проваливается под текстуру, скорее всего объекта созданного через стример. можно обновлять позиции актеров при стриме. лучше по таймеру.
Reply

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Советую ознакомиться с особенностями работы компьютера с float числами: https://habrahabr.ru/post/112953/
Есть какой то вариант фикса?
Reply

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Не должно, оно выводит как ему и положено 2.799999999(9).
Поищи функцию округления до определённого знака после запятой.
В стандартных не вижу такой, можете подсказать где искать?
Reply

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

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
Есть какой то вариант фикса?
Если нужна точность в 1 знак, то можно вообще не использовать Float числа. Напиши, что конкретно ты хочешь сделать и для чего тебе это нужно.
Reply

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Если нужна точность в 1 знак, то можно вообще не использовать Float числа. Напиши, что конкретно ты хочешь сделать и для чего тебе это нужно.
Например, для хранения температуры.
36.6 отображается как 36.5(99999)
Reply

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
Например, для хранения температуры.
36.6 отображается как 36.5(99999)
Храни температуру как целое число - 366 и выводи с помощью чего-то подобного:

PHP код:
stock GetTemperatureString(value)
{
    new 
string[16];
    
format(stringsizeof(string), "%d.%d"value 10value 10);
    return 
string;

Reply

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Храни температуру как целое число - 366 и выводи с помощью чего-то подобного:

PHP код:
stock GetTemperatureString(value)
{
    new 
string[16];
    
format(stringsizeof(string), "%d.%d"value 10value 10);
    return 
string;

Интересный вариант, спасибо за наводку.
Reply

Горит очко пацаны, ранее обращался с крашем в тупорылой функции, теперь создал другую и проблема повторяется, НУ ЧЕМУ ТУТ КРАШИТЬ ТО ВООБЩЕ?!?!?

Код:
[15:55:52] [debug] Server crashed while executing tsn.amx
[15:55:52] [debug] AMX backtrace:
[15:55:52] [debug] #0 00201d44 in MySetPlayerPos (playerid=224, Float:x=865.75098, Float:y=-1568.33728, Float:z=18.08130) at D:\tsn\gamemodes\tsn.pwn:36713
Код:
stock MySetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
	SetPVarInt(playerid, "AntiKickTP", 15); // строка 36713
	SetPlayerPos(playerid, x, y, z);
    return true;
}
Reply

Quote:
Originally Posted by OneHitWonder
Посмотреть сообщение
Горит очко пацаны, ранее обращался с крашем в тупорылой функции, теперь создал другую и проблема повторяется, НУ ЧЕМУ ТУТ КРАШИТЬ ТО ВООБЩЕ?!?!?

Код:
[15:55:52] [debug] Server crashed while executing tsn.amx
[15:55:52] [debug] AMX backtrace:
[15:55:52] [debug] #0 00201d44 in MySetPlayerPos (playerid=224, Float:x=865.75098, Float:y=-1568.33728, Float:z=18.08130) at D:\tsn\gamemodes\tsn.pwn:36713
Код:
stock MySetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
	SetPVarInt(playerid, "AntiKickTP", 15); // строка 36713
	SetPlayerPos(playerid, x, y, z);
    return true;
}
Может лимит PVar'ов привышен (800)?
Reply

У меня их даже 100 нет, это точно
Это ведь имеется на игрока, верно?
Или 300 игроков, каждому по пвару AntiKickTP = 300 пваров?
Reply

Quote:
Originally Posted by OneHitWonder
Посмотреть сообщение
Горит очко пацаны, ранее обращался с крашем в тупорылой функции, теперь создал другую и проблема повторяется, НУ ЧЕМУ ТУТ КРАШИТЬ ТО ВООБЩЕ?!?!?

Код:
[15:55:52] [debug] Server crashed while executing tsn.amx
[15:55:52] [debug] AMX backtrace:
[15:55:52] [debug] #0 00201d44 in MySetPlayerPos (playerid=224, Float:x=865.75098, Float:y=-1568.33728, Float:z=18.08130) at D:\tsn\gamemodes\tsn.pwn:36713
Код:
stock MySetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
	SetPVarInt(playerid, "AntiKickTP", 15); // строка 36713
	SetPlayerPos(playerid, x, y, z);
    return true;
}
это все [debug] строчки?
Reply

Да, всё что есть. Уже не первый раз встречаю проблему когда в функции стоит банальный код и его крашит. А если идентичный код запускать не в отдельной функции, то всё работает отлично.
Reply

Quote:
Originally Posted by OneHitWonder
Посмотреть сообщение
У меня их даже 100 нет, это точно
Это ведь имеется на игрока, верно?
Или 300 игроков, каждому по пвару AntiKickTP = 300 пваров?
800 на игрока, да. Попробуй закомментировать эту строку и проверить,
Reply

значит что-то не так с крашдетектом. По крайней мере он должен выводить Native backtrace
Reply

Нет, с крашдетектом всё нормально
Уже не первый раз встречаю такие краши и версия последняя
Reply

Я не знаю, это просто чудеса ебаные какие-то
Reply

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Может лимит PVar'ов привышен (800)?
лол а что у сампа есть лимит пваров, я только узнал
Reply


Forum Jump:


Users browsing this thread: 19 Guest(s)