Функция движения камера игрока на подобие передвижения объектов, функцию можно доработать если знать как имея координаты на которые направлена камера получить угол её поворота по всем 3 осям, задача для математиков(геометрия). Использовать её туго так как нет функции позволяющей получить координаты камеры игрока приходится самостоятельно высчитывать стартовые координаты, но вообще как вариант использования это перед стартом гонок, идёт отсчёт времени и камера передвигается за машину игрока. Помните что после того как движение будет закончено необходимо вернуть камеру игроку для этого используется функция SetCameraBehindPlayer(playerid) в случае с гонками можно дописать следующий код.
Code
forward CameraBehind(playerid); public CameraBehind(playerid) { SetCameraBehindPlayer(playerid); }
Немного меняем конец функции движения камеры
Code
f(PosX != ToX || PosY != ToY || PosZ != ToZ) SetTimerEx("CameraMove",10,0,"dffffffffff",playerid,PosX,PosY,PosZ,ToX,ToY,ToZ,LookX,LookY,LookZ,speed); else SetTimerEx("CameraBehind",1000,0,"d",playerid);//Теперь через секунду после окончания движения камеры она будет возвращена игроку
Добавлено (30.08.2008, 10:29) --------------------------------------------- Другая функция на подобие движения объектов только эта их поворачивает (незнаю на сколько она новая, химичил сам), применение пока придумал только одно открытие/закрытие шлагбаумов, скоро скриптик выложу:
Code
Float:abs(Float:x) { return x<0?x*(-1):x; }
new TimerObjects[MAX_OBJECTS]; forward RotObjectMove(objectid,Float:ToRx,Float:ToRy,Float:ToRz,Float:speed); public RotObjectMove(objectid,Float:ToRx,Float:ToRy,Float:ToRz,Float:speed) { KillTimer(TimerObjects[objectid]); new Float:Speed = speed/10; new Float:Rx,Float:Ry,Float:Rz; GetObjectRot(objectid,Rx,Ry,Rz); if(Rx < ToRx) Rx = (abs(Rx - ToRx) < Speed)?ToRx:Rx + Speed; else if(Rx > ToRx) Rx = (abs(ToRx - Rx) < Speed)?ToRx:Rx - Speed;
это упрощает код, чем писать там new name... GetPlayerName в каждом куске мода можно просто использовать эу функцию. например format(string,sizeof(string)," Самый крутой чувак: %s", GetSimplePlayerName(playerid));
Добавлено (03.09.2008, 19:47) --------------------------------------------- или еще мелочь:
А я бы это сделал через OnPlayerStateChange... Вот так, например.
Code
if (gPublicEnemy != INVALID_PLAYER_ID){ if (gPublicEnemy == playerid && newstate == PLAYER_STATE_DRIVER){ RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,COLOUR_RED,"ВВН не может садиться за руль!"); } }
Это варнинг... Переменная уже есть в коде... Покажи несколько строчек до и после той, на которой этот варнинг... Если это от вставки моего кода - покажи, куда вставил...