| Дополнительные фунции |
| [SFD]EvilRiaz | Дата: Вторник, 19.08.2008, 13:42 | Сообщение # 1 |
|
Советчик
![[SFD]EvilRiaz](http://www.sfd-team.ru/images/avatars/avatar_21.png)
Группа:
Разработчики
Сообщений: 1103
Город: City of Los Angeles
Статус: 
| AddAllClass - добавляет все скины 1 коммандой. Code public AddAllClass(Float:x,Float:y,Float:z,Float:r,w1,a1,w2,a2,w3,a3) for(new i; i < 300; i++) if(IsValidSkin(i)) AddPlayerClass(i,x,y,z,r,w1,a1,w2,a2,w3,a3); public IsValidSkin(skinid) { #define MAX_BAD_SKINS 14 new badSkins[MAX_BAD_SKINS] = { 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 273, 289 }; if (skinid < 0 || skinid > 299) return false; for (new i = 0; i < MAX_BAD_SKINS; i++) { if (skinid == badSkins[i]) return false; } #undef MAX_BAD_SKINS return true; } Пример использования: Code AddAllClass(0.0,34.0,1000.0,50.0,46,1,24,100,15,1); 0.0 - X 34.0 - Y 1000.0 - Z 50.0 - поворот 46 - 1 оружие 1 - патроны 1 оружия 24 - 2 оружие 100 - патроны 2 оружия 15 - 3 оружие 1 - патроны 3 оружия
Где моя репа 0_o??? Мои работы Кто хочет такую штучку смотрим сюда Current Developments: [SFD] TDM Mode, [GolNet] Big City Life [GF Mod]
|
| |
| | |
| JIeXa | Дата: Вторник, 19.08.2008, 19:51 | Сообщение # 2 |
|
Местный

Группа:
Продвинутые
Сообщений: 719
Город: Челябинск
Статус: 
| public AddAllClass(Float:x,Float:y,Float:z,Float:r,w1,a1,w2,a2,w3,a3) { for(new i; i < 300; i++) {if(IsValidSkin(i)) AddPlayerClass(i,x,y,z,r,w1,a1,w2,a2,w3,a3);} return 1; } public IsValidSkin(skinid) { new badSkins[14] = { 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 273, 289 }; if (skinid < 0 || skinid > 299) return 0; for (new i = 0; i < 14; i++) { if (skinid == badSkins[i]) return 0; } return 1; } более валидный код
My works: [FS]Otmichka [FS]Music [FS]Clans & Spawn [FS]Time and Date [FS]Fireworks [FS]FixRus [FS]Fond [FS]Kill [FS]Lop&veh Scripts Package My ICQ 444154563
|
| |
| | |
| Spirit | Дата: Суббота, 30.08.2008, 10:29 | Сообщение # 3 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 129
Город: Омск
Статус: 
| Code Float:abs(Float:x) { return x<0?x*(-1):x; } forward CameraMove(playerid,Float:PosX,Float:PosY,Float:PosZ,Float:ToX,Float:ToY,Float:ToZ,Float:LookX,Float:LookY,Float:LookZ,Float:speed); public CameraMove(playerid,Float:PosX,Float:PosY,Float:PosZ,Float:ToX,Float:ToY,Float:ToZ,Float:LookX,Float:LookY,Float:LookZ,Float:speed) { new Float:Speed = speed/100; if(PosX < ToX) PosX = (abs(PosX - ToX) < Speed)?ToX:PosX + Speed; else if(PosX > ToX) PosX = (abs(ToX - PosX) < Speed)?ToX:PosX - Speed; if(PosY < ToY) PosY = (abs(PosY - ToY) < Speed)?ToY:PosY + Speed; else if(PosY > ToY) PosY = (abs(ToY - PosY) < Speed)?ToY:PosY - Speed; if(PosZ < ToZ) PosZ = (abs(PosZ - ToZ) < Speed)?ToZ:PosZ + Speed; else if(PosZ > ToZ) PosZ = (abs(ToZ - PosZ) < Speed)?ToZ:PosZ - Speed; SetPlayerCameraPos(playerid,PosX,PosY,PosZ); SetPlayerCameraLookAt(playerid,LookX,LookY,LookZ); printf("%f|%f|%f",PosX,PosY,PosZ); printf("^%f|%f|%f",ToX,ToY,ToZ); if(PosX != ToX || PosY != ToY || PosZ != ToZ) SetTimerEx("CameraMove",10,0,"dffffffffff",playerid,PosX,PosY,PosZ,ToX,ToY,ToZ,LookX,LookY,LookZ,speed); } Функция движения камера игрока на подобие передвижения объектов, функцию можно доработать если знать как имея координаты на которые направлена камера получить угол её поворота по всем 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;
if(Ry < ToRy) Ry = (abs(Ry - ToRy) < Speed)?ToRy:Ry + Speed; else if(Ry > ToRy) Ry = (abs(ToRy - Ry) < Speed)?ToRy:Ry - Speed;
if(Rz < ToRz) Rz = (abs(Rz - ToRz) < Speed)?ToRz:Rz + Speed; else if(Rz > ToRz) Rz = (abs(ToRz - Rz) < Speed)?ToRz:Rz - Speed; SetObjectRot(objectid,Rx,Ry,Rz); if(Rx != ToRx || Ry != ToRy || Rz != ToRz) TimerObjects[objectid] = SetTimerEx("RotObjectMove",10,0,"dffff",objectid,ToRx,ToRy,ToRz,speed); else TimerObjects[objectid] = -1; } Перед этим все элементы таймера желательно бы приравнять к (-1), а то ещё снесёт вам в моде таймер какой нужный.
Любиш садизм люби и мазахизм :)
|
| |
| | |
| Orange | Дата: Среда, 03.09.2008, 19:47 | Сообщение # 4 |
|
Местный

Группа:
Ангел Хранитель
Сообщений: 693
Город: Город? ГОРОД?!?
Статус: 
| простенько и со вкусом Получить имя игрока Code stock GetSimplePlayerName(playerid) { new playername[24]; GetPlayerName(playerid, playername, sizeof(playername)); return playername; } это упрощает код, чем писать там new name... GetPlayerName в каждом куске мода можно просто использовать эу функцию. например format(string,sizeof(string)," Самый крутой чувак: %s", GetSimplePlayerName(playerid)); Добавлено (03.09.2008, 19:47) --------------------------------------------- или еще мелочь: Code stock GivePlayerScore(playerid, score) { SetPlayerScore(playerid,GetPlayerScore(playerid)+score); } ну это тоже просто, можно самому писать подобные функции упрощающие и укорачивающие код. P.S 555 пост
Сообщение отредактировал Mishanzanza - Среда, 03.09.2008, 19:48 |
| |
| | |
| [SFD]EvilRiaz | Дата: Пятница, 05.09.2008, 18:09 | Сообщение # 5 |
|
Советчик
![[SFD]EvilRiaz](http://www.sfd-team.ru/images/avatars/avatar_21.png)
Группа:
Разработчики
Сообщений: 1103
Город: City of Los Angeles
Статус: 
| Code stock SetPlayerMoney(playerid, money) { GivePlayerMoney(playerid,ResetPlayerMoney(playerid)+money); } Устанавливает кол-во денег игроку.
Где моя репа 0_o??? Мои работы Кто хочет такую штучку смотрим сюда Current Developments: [SFD] TDM Mode, [GolNet] Big City Life [GF Mod]
|
| |
| | |
| MadCat | Дата: Пятница, 05.09.2008, 19:11 | Сообщение # 6 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 84
Город: Екатеринбург
Статус: 
| Или Code stock SetPlayerMoney(playerid,money) { GivePlayerMoney(playerid,money-GetPlayerMoney(playerid)); }
MultiGTA
|
| |
| | |
| LuxurY | Дата: Суббота, 06.09.2008, 22:20 | Сообщение # 7 |
|
Уверенный

Группа:
Продвинутые
Сообщений: 268
Город: OZ
Статус: 
| Code stock GetRandomOnlinePlayer ( ) { new online[MAX_PLAYERS], loop; for ( new i; i < MAX_PLAYERS; i++ ) { if ( IsPlayerConnected ( i ) == 1 ) online[loop++] = i; } return ( loop == 0 ) ? ( INVALID_PLAYER_ID ) : ( online[random ( loop )] ); } ну вообщем название говорит за себя. если игроков нет возвращает неправильный ид игрока.
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
| |
| | |
| Orange | Дата: Воскресенье, 07.09.2008, 17:16 | Сообщение # 8 |
|
Местный

Группа:
Ангел Хранитель
Сообщений: 693
Город: Город? ГОРОД?!?
Статус: 
| LuxurY, блин сидел мучался как такое замутить, а тут вуаля!
|
| |
| | |
| stepmex | Дата: Понедельник, 08.09.2008, 15:54 | Сообщение # 9 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 115
Статус: 
| Возвращает ID игрока который сидит за рулем машины: Code stock IsVehicleDriver(vehicleid) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i) && IsPlayerInVehicle(i,vehicleid) && GetPlayerState(i) == 2) { return i; } } return INVALID_PLAYER_ID; }
Играй у нас:
|
| |
| | |
| LOGOTiPiK | Дата: Понедельник, 08.09.2008, 20:28 | Сообщение # 10 |
|
Уважаемый

Группа:
Продвинутые
Сообщений: 831
Статус: 
| Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта
|
| |
| | |
| stepmex | Дата: Понедельник, 08.09.2008, 21:07 | Сообщение # 11 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 115
Статус: 
| Quote (LOgotipik) Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта такое пишиться индивидуально для каждого мода, т.к. ВНН встроенно в мод и передать его в другой код нереал. Юзай OnPlayerEnterVehicle
Играй у нас:
|
| |
| | |
| LOGOTiPiK | Дата: Вторник, 09.09.2008, 00:18 | Сообщение # 12 |
|
Уважаемый

Группа:
Продвинутые
Сообщений: 831
Статус: 
| Я хочу это реализовать в PEN: LS+SF v1.5.3 Если можеш, помоги
|
| |
| | |
| MadCat | Дата: Вторник, 09.09.2008, 06:19 | Сообщение # 13 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 84
Город: Екатеринбург
Статус: 
| А я бы это сделал через OnPlayerStateChange... Вот так, например. Code if (gPublicEnemy != INVALID_PLAYER_ID){ if (gPublicEnemy == playerid && newstate == PLAYER_STATE_DRIVER){ RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,COLOUR_RED,"ВВН не может садиться за руль!"); } }
MultiGTA
|
| |
| | |
| LOGOTiPiK | Дата: Вторник, 09.09.2008, 07:11 | Сообщение # 14 |
|
Уважаемый

Группа:
Продвинутые
Сообщений: 831
Статус: 
| Параллельный вопрос! Вот это что за эррор? Code local variable "newstate" shadows a variable at a preceding level
Сообщение отредактировал LOgotipik - Вторник, 09.09.2008, 07:15 |
| |
| | |
| MadCat | Дата: Вторник, 09.09.2008, 08:38 | Сообщение # 15 |
|
Освоившийся

Группа:
Продвинутые
Сообщений: 84
Город: Екатеринбург
Статус: 
| Это варнинг... Переменная уже есть в коде... Покажи несколько строчек до и после той, на которой этот варнинг... Если это от вставки моего кода - покажи, куда вставил...
MultiGTA
|
| |
| |
|