Dima-kun | Дата: Суббота, 19.04.2014, 15:34 | Сообщение # 1 |
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
| В данной теме распишу все новые функции, добавленные в SA-MP 0.3z, с примерами. По алфавиту: [pwn]1. BlockIpAddress( ip_address[], timems ) - Блокирует указанный IP-адрес на сервере на указанное время. Параметры: ip_address[] - (string)блокируемый IP-адрес timems - (int)время на которое данный IP блокируется в миллисекундах (0 - блокироване на не определенный срок). [/pwn]
Пример использования: [pwn]public OnPlayerCommandText( playerid, cmdtext[] ) { if( !strcmp( cmdtext, "/blockme", true ) ) { new string[ 128 ];
GetPlayerIp( playerid, string, sizeof( string ) ); BlockIpAdress( string, 900000 ); // 15 минут (15x60x1000) GetPlayerName( playerid, string, MAX_PLAYER_NAME ); format( string, sizeof( string ), "* %s отправил себя на 15 минут в баню.", string ); SendClientMessage( playerid, 0xffffffff, string ); return 1; } return 1; }[/pwn]
[pwn]2.CreateExplosionForPlayer( playerid, Float: X, Float: Y, Float: Z, type, Float: Radius ) - создает взрыв для игрока в указанном месте. Параметры: playerid - (int) - ID игрока, для которого вызывается взрыв; Float: X - (float) Позиция Х игрока. Float: Y - (float) Позиция Y игрока. Float: Z - (float) Позиция Z игрока. type - (int) Тип взрыва(см. внизу) Float: Radius - (float) радиус взрыва.[/pwn] Типы взрыва: Цитата wiki.sa-mp.com 0 - Видимый, цельный, не создает огня, наносит урон, с большим радиусом действия 1 - Видимый, цельный, создает огонь, не наносит урона, с средним радиусом действия 2 - Видимый, цельный, создает огонь, наносит урон, с большим радиусом действия 3 - Видимый, цельный, иногда создает огонь, наносит урон, с большим радиусом действия 4 - Видимый, раздельный, не создает огня, наносит урон, взрывается без звука и спец эффектов, с большим радиусом действия 5 - аналогичен 4 6 - Видимый, цельный, не создает огня, наносит урон, после взрыва излучает красноватый свет, с очень большим радиусом действия 7 - Видимый, цельный, не создает огня, наносит урон, после взрыва излучает красноватый свет, с огромным радиусом действия 8 - Не видимый, цельный, не создает огня, наносит урон, со средним радиусом действия 9 - Не видимый, цельный, создает огонь, наносит урон, создает пожар 10 - Видимый, цельный, не создает огня, наносит урон, с большим радиусом действия 11 - Видимый, цельный, не создает огня, наносит урон, с маленьким радиусом действия 12 - Видимый, цельный, не создает огня, наносит урон, с очень маленьким радиусом действия 13 - Не видимый, цельный, не создает огня, не наносит урона, не производит эффектов кроме черного следа на месте взрыва, с большим радиусом действия.
Пример: [pwn]public OnPlayerCommandText( playerid, cmdtext[] ) { if( !strcmp( cmdtext, "/blowme", true ) ) { new Float: pos[ 3 ];
GetPlayerPos( playerid, pos[ 0 ], pos[ 1 ], pos[ 2 ] ); CreateExplosionForPlayer( playerid, pos[ 0 ], pos[ 1 ], pos[ 2 ], 1, 10.0 ); return 1; } return 1; }[/pwn]
[pwn] 3.GetPlayerCameraAspectRatio( playerid ) - Возвращает соотношение сторон у игрока ( 4:3, 16:9 и т.д ) Параметры: playerid - (int)ID игрока Возвращает: 1.333333 - 4:3 1.777777 - 16:9 [/pwn] По соотношению сторон можно определить высоту, ширину и площадь экрана игрока формулами:
[pwn]public OnPlayerCommandText( playerid, cmdtext[] ) { if( !strcmp( cmdtext, "/myaspect", true ) ) { new Float: string[ 128 ];
format( string, sizeof( string ), "Aspect Ratio - %f", GetPlayerCameraAspectRatio( playerid ) ); SendClientMessage( playerid, 0xffffffff, string ); return 1; } return 1; }[/pwn]
[pwn] 4.GetPlayerCameraZoom( playerid ) - узнает уровень увеличения экрана игрока (прицел снайперской винтовки, просто экран и т.п). Параметры: playerid - (int)ID игрока [/pwn] Пример: [pwn]public OnPlayerCommandText( playerid, cmdtext[] ) { if( !strcmp( cmdtext, "/myzoom", true ) ) { new Float: string[ 128 ];
format( string, sizeof( string ), "Camera Zoom Level - %f", GetPlayerCameraZoom( playerid ) ); SendClientMessage( playerid, 0xffffffff, string ); return 1; } return 1; }[/pwn]
[pwn] 5.GetPlayerLastShotVectors(playerid, &Float:fOriginX, &Float:fOriginY, &Float:fOriginZ, &Float:fHitPosX, &Float:fHitPosY, &Float:fHitPosZ) - узнает место откуда был произведен выстрел и куда попала пуля Параметры: playerid - (int)ID игрока &Float:fOriginX - (float) Позиция X стрелявшего &Float:fOriginY - (float) Позиция Y стрелявшего &Float:fOriginZ - (float) Позиция Z стрелявшего &Float:fHitPosX - (float) Позиция X попадания &Float:fHitPosY - (float) Позиция Y попадания &Float:fHitPosZ - (float) Позиция Z попадания [/pwn]
Пример: [pwn] public OnPlayerCommandText( playerid, cmdtext[] ) { if(strcmp(cmdtext, "/lastshot", true) == 0) { new lsString[ 128 ], Float:fOriginX, Float:fOriginY, Float:fOriginZ, Float:fHitPosX, Float:fHitPosY, Float:fHitPosZ;
GetPlayerLastShotVectors( playerid, fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ ); format( lsString, 128, "Last Shot Information: Origin: %f, %f, %f. Hit position: %f, %f, %f", fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ ); SendClientMessage( playerid, 0xffffffff, lsString ); return 1; } } [/pwn]
[pwn] 6.GetServerTickRate( ) - Узнает частоту обновления сервера (аналог FPS) Функция не имеет параметров. [/pwn] Пример: [pwn] public OnGameModeInit( ) { printf( "The current server tick rate is: %i", GetServerTickRate() ); } [/pwn]
[pwn] 7. NetStats - Функции, которые по отдельности узнают данные из F5 у каждого игрока. [/pwn]
Пример: [pwn] public OnPlayerCommandText( playerid, cmdtext[] ) { if( !strcmp( cmdtext, "/bytesreceived", true ) ) { new szString[ 144 ];
format( szString, sizeof( szString ), "You have sent %i bytes of information to the server.", NetStats_BytesRecieved( playerid ) ); SendClientMessage( playerid, 0xffffffff, szString ); } return 1; } [/pwn]
[pwn]8.SendDeathMessageToPlayer( playerid, killer, killee, weapon ) - показывает лог убийств к конкретному игроку Парметры: playerid - (int) ID игрока которому показывать чат killer - (int) - ID убийцы killee - (int) - ID убитого weapon - (int) - ID оружия убийства [/pwn] Пример: [pwn] public OnPlayerDeath( playerid, killerid, reason ) { SendDeathMessageToPlayer( playerid, killerid, playerid, reason ); return 1; } [/pwn]
[pwn] 9.UnBlockIpAddress( ip_address[] ) - открывает доступ забаненному ранее IP Параметры: ip_address[] - (string) забаненный IP-адрес [/pwn] Пример: [pwn] public OnGameModeInit() { UnBlockIpAddress("127.0.0.1"); return 1; } [/pwn]
[pwn]10.VectorSize(Float:X, Float:Y, Float:Z) - узнает размер вектора. Параметры: Float: X - (float)Координата вектора X Float: Y - (float)Координата вектора Y Float: Z - (float)Координата вектора Z [/pwn]
Пример: [pwn] stock Float:GetDistanceBetweenPoints( Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2 ) return VectorSize( x1 - x2, y1 - y2, z1 - z2 ); [/pwn]
А теперь колбэки: [pwn]1.OnIncomingConnection( playerid, ip_address[], port ) - вызывается когда игрок подключается к серверу Парметры: playerid - (int) ID подключаемого игрока ip_address[] - (string)IP-адрес подключаемого игрока port - (int)порт подключаемого игрока [/pwn] Пример: [pwn] public OnIncomingConnection(playerid, ip_address[], port) { printf("ID %d is attempting to connect to the server [IP: %s:%i]", playerid, ip_address, port); return 1; } [/pwn]
[pwn] 2.OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float: fX, Float: fY, Float: fZ ) - вызывается когда игрок стреляет из оружия Параметры: playerid - (int)ID стреляющего игрока weaponid - (int)ID оружия из которого стреляют hittype - (int) тип вещи, в которую попал игрок (промах, игрок, машина, объект) hitid - (int)ID вещи в которую попали Float: fX - (float)Позиция попадания Х Float: fY - (float)Позиция попадания Y Float: fZ - (float)Позиция попадания Z [/pwn] Пример: [pwn] public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ ) { new szString[ 144 ];
format( szString, sizeof( szString ), "Weapon %i fired. hittype: %i hitid: %i pos: %f, %f, %f", weaponid, hittype, hitid, fX, fY, fZ ); SendClientMessage( playerid, 0xffffffff, szString ); return 1; } [/pwn]
Надеюсь все понятно описал. Если будут вопросы - задавайте.
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
|
|
|