Профиль
Информация Управление
Здравствуйте, уважаемый посетитель. К сожалению, Вы не были распознаны форумом, как зарегистрированный пользователь. Для полноценного использования возможностей нашего форума вам необходимо зарегистрироваться. Если вы уже зарегистрированы на форуме, то вам необходимо пройти авторизацию, используя Ваш логин и пароль. Зарегистрированные пользователи получают возможность возможность общения на нашем форуме.


[Новые сообщения · Правила форума · RSS ]
  • Страница 1 из 1
  • 1
[Tutorial] Плавное вращение обьекта по его осям
OKStyle Дата: Среда, 23.02.2011, 11:52 | Сообщение # 1
Архивариус
Группа: Администраторы
Зарегистрирован: 19.02.2011
Сообщений: 125
Репутация: 8
Статус: Offline
В начало:

Code
new CurrentObject;  
new AxisOfRotation;  
new iteration;

В OnGameModeInit:

Code
CurrentObject = CreateObject(....); // создаём объект

В OnPlayerCommandText:

Code
if(!strcmp(cmd,"/rox+",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 1;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}  
if(!strcmp(cmd,"/roy+",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 2;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}  
if(!strcmp(cmd,"/roz+",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 3;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}  
if(!strcmp(cmd,"/rox-",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 4;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}  
if(!strcmp(cmd,"/roy-",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 5;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}  
if(!strcmp(cmd,"/roz-",true))  
{  
     new tmp[30];  
     tmp = strtok(cmdtext,idx);  
     AxisOfRotation = 6;  
     new angle = strval(tmp);  
     iteration = angle/0.5;  
     SetTimerEx("ObjectRotateTimer",100,iteration);  
     return 1;  
}

В низ мода:

Code
forward ObjectRotateTimer(angle);  
public ObjectRotateTimer(angle)  
{  
     if(iteration > 0)  
     {  
         if(AxisOfRotation == 1)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x+0.5,y,z);  
         }  
         else if(AxisOfRotation == 2)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x,y+0.5,z);  
         }  
         else if(AxisOfRotation == 3)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x,y,z+0.5);  
         }  
         else if(AxisOfRotation == 4)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x-0.5,y,z);  
         }  
         else if(AxisOfRotation == 5)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x,y-0.5,z);  
         }  
         else if(AxisOfRotation == 6)  
         {  
             new Float:x,Float:y,Float:z;  
             GetObjectRot(CurrentObject,x,y,z);  
             SetObjectRot(CurrentObject,x,y,z-0.5);  
         }  
         iteration--;  
     }  
}


 
Romanius Дата: Четверг, 17.03.2011, 18:08 | Сообщение # 2
Рядовой
Группа: Модераторы
Зарегистрирован: 14.03.2011
Сообщений: 9
Репутация: 0
Статус: Offline
вместо if в таких случиях используй switch
 
Folk Дата: Четверг, 17.03.2011, 21:21 | Сообщение # 3
Лейтенант
Группа: Проверенные
Зарегистрирован: 23.02.2011
Сообщений: 44
Репутация: 2
Статус: Offline
Quote
вместо if в таких случиях используй switch

Мне всегда было интересно а зачем? Если мне так удобнее, а скорость изменится на 50 миллисекунд, да кто это заметит?
 
SEVI4 Дата: Пятница, 18.03.2011, 19:02 | Сообщение # 4
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 11
Репутация: 0
Статус: Offline
оптимизация мать хорошего кода

Come back ? yeah
 
Folk Дата: Пятница, 18.03.2011, 22:49 | Сообщение # 5
Лейтенант
Группа: Проверенные
Зарегистрирован: 23.02.2011
Сообщений: 44
Репутация: 2
Статус: Offline
Пффф главное работает и ладно, а кол-во строк мне наплевать, главнео чтобы хорошо работало
 
Romanius Дата: Суббота, 19.03.2011, 17:08 | Сообщение # 6
Рядовой
Группа: Модераторы
Зарегистрирован: 14.03.2011
Сообщений: 9
Репутация: 0
Статус: Offline
Quote (Folk)
Пффф главное работает и ладно, а кол-во строк мне наплевать, главнео чтобы хорошо работало

Теперь мне понятно, какой ты "скриптер"...

 
Folk Дата: Воскресенье, 20.03.2011, 14:07 | Сообщение # 7
Лейтенант
Группа: Проверенные
Зарегистрирован: 23.02.2011
Сообщений: 44
Репутация: 2
Статус: Offline
Quote
Теперь мне понятно, какой ты "скриптер"...

Какой? Я знаю как это все использовать, но не хочу. В чем разница между тем что я напишу else if или использую switch
 
Romanius Дата: Вторник, 22.03.2011, 00:32 | Сообщение # 8
Рядовой
Группа: Модераторы
Зарегистрирован: 14.03.2011
Сообщений: 9
Репутация: 0
Статус: Offline
Quote (Folk)
В чем разница

ты не знаешь азов программирования....
 
Folk Дата: Вторник, 22.03.2011, 10:15 | Сообщение # 9
Лейтенант
Группа: Проверенные
Зарегистрирован: 23.02.2011
Сообщений: 44
Репутация: 2
Статус: Offline
Quote
ты не знаешь азов программирования....

Может я функции хорошо не знаю, с этим могу согласиться, но вот что-что а азы я знаю
 
[DJ]Smagold Дата: Четверг, 24.03.2011, 20:18 | Сообщение # 10
Рядовой
Группа: Скриптеры
Зарегистрирован: 05.03.2011
Сообщений: 8
Репутация: 0
Статус: Offline
Вот смотри, у тебя на сервере играет 100 человек.
функция if выполняется, например 50 млс., и switch - 10 млс.
if = 50*100=5000 млс. = через 5 секунд у тебя будет выполнятся функция if.
switch = 10*100 = 1000 млс. = через 1 секунду у тебя выполнится функция switch.
Теперь решай.
 
Folk Дата: Четверг, 24.03.2011, 22:06 | Сообщение # 11
Лейтенант
Группа: Проверенные
Зарегистрирован: 23.02.2011
Сообщений: 44
Репутация: 2
Статус: Offline
Вот smagold теперь реально показал что лучше юзать switch, а вы что-то говорите говорите, но чем он помогает так и не сказали
 
  • Страница 1 из 1
  • 1
Поиск:

Сайт управляется системой uCoz