 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Дополнительные фунции
| |
| theAlone | Дата: Вторник, 19.08.2008, 13:42 | Сообщение # 1 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| 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 оружия
|
| |
|
|
| Aleksey | Дата: Вторник, 19.08.2008, 19:51 | Сообщение # 2 |
|
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус: 
| 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; } более валидный код
вааааааааааййй..// :(0
|
| |
|
|
| Spirit | Дата: Суббота, 30.08.2008, 10:29 | Сообщение # 3 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус: 
| 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 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 945
Награды: 6
Город: San Fierro
Репутация: 101
Замечания: 0%
Статус: 
| простенько и со вкусом Получить имя игрока 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 |
| |
|
|
| theAlone | Дата: Пятница, 05.09.2008, 18:09 | Сообщение # 5 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Code stock SetPlayerMoney(playerid, money) { GivePlayerMoney(playerid,ResetPlayerMoney(playerid)+money); } Устанавливает кол-во денег игроку.
|
| |
|
|
| MadCat | Дата: Пятница, 05.09.2008, 19:11 | Сообщение # 6 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 113
Награды: 5
Город: Екатеринбург
Репутация: 24
Замечания: 0%
Статус: 
| Или Code stock SetPlayerMoney(playerid,money) { GivePlayerMoney(playerid,money-GetPlayerMoney(playerid)); }
MultiGTA Now open source Последняя информация
|
| |
|
|
| LuxurY | Дата: Суббота, 06.09.2008, 22:20 | Сообщение # 7 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| 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 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 945
Награды: 6
Город: San Fierro
Репутация: 101
Замечания: 0%
Статус: 
| LuxurY, блин сидел мучался как такое замутить, а тут вуаля!
|
| |
|
|
| stepmex | Дата: Понедельник, 08.09.2008, 15:54 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Возвращает 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; }
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| [TDM]Kosmos | Дата: Понедельник, 08.09.2008, 20:28 | Сообщение # 10 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2046
Награды: 8
Город: Йошкар-Ола
Репутация: 126
Замечания: 40%
Статус: 
| Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта
Я вернулся =)
|
| |
|
|
| stepmex | Дата: Понедельник, 08.09.2008, 21:07 | Сообщение # 11 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Quote (LOgotipik) Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта такое пишиться индивидуально для каждого мода, т.к. ВНН встроенно в мод и передать его в другой код нереал. Юзай OnPlayerEnterVehicle
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| [TDM]Kosmos | Дата: Вторник, 09.09.2008, 00:18 | Сообщение # 12 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2046
Награды: 8
Город: Йошкар-Ола
Репутация: 126
Замечания: 40%
Статус: 
| Я хочу это реализовать в PEN: LS+SF v1.5.3 Если можеш, помоги
Я вернулся =)
|
| |
|
|
| MadCat | Дата: Вторник, 09.09.2008, 06:19 | Сообщение # 13 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 113
Награды: 5
Город: Екатеринбург
Репутация: 24
Замечания: 0%
Статус: 
| А я бы это сделал через OnPlayerStateChange... Вот так, например. Code if (gPublicEnemy != INVALID_PLAYER_ID){ if (gPublicEnemy == playerid && newstate == PLAYER_STATE_DRIVER){ RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,COLOUR_RED,"ВВН не может садиться за руль!"); } }
MultiGTA Now open source Последняя информация
|
| |
|
|
| [TDM]Kosmos | Дата: Вторник, 09.09.2008, 07:11 | Сообщение # 14 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2046
Награды: 8
Город: Йошкар-Ола
Репутация: 126
Замечания: 40%
Статус: 
| Параллельный вопрос! Вот это что за эррор? Code local variable "newstate" shadows a variable at a preceding level
Я вернулся =)
Сообщение отредактировал LOgotipik - Вторник, 09.09.2008, 07:15 |
| |
|
|
| MadCat | Дата: Вторник, 09.09.2008, 08:38 | Сообщение # 15 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 113
Награды: 5
Город: Екатеринбург
Репутация: 24
Замечания: 0%
Статус: 
| Это варнинг... Переменная уже есть в коде... Покажи несколько строчек до и после той, на которой этот варнинг... Если это от вставки моего кода - покажи, куда вставил...
MultiGTA Now open source Последняя информация
|
| |
|
|
|
 |
|
 | |
| |
|