- Регистрация
- 4 Окт 2011
- Сообщения
- 221
- Лучшие ответы
- 0
- Репутация
- 84
Футбол в SA:MP? Это реально!
1. Создаём в начале мода переменную:
PHP:
new football;
PHP:
football = CreateObject(1598,X,Y,Z,0.00000000,0.00000000,0.00000000);
3. Создаём возможность "Пинать" мячик, в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
if(newkeys == 1024)
{
new Float:ox, Float:oy, Float:oz;
GetObjectPos(football, ox, oy, oz);
if(PlayerToPoint(1.5,playerid,ox,oy,oz)) {
new Float: px, Float: py, Float: pz;
GetPlayerPos(playerid, px, py, pz);
GetXYInFrontOfPlayer(playerid, px, py, 8.5);
MoveObject(football,px,py,64.5344,10.0);
PlayerPlaySound(playerid,1130,0.0,0.0,0.0);
ApplyAnimation(playerid,"FIGHT_D","FightD_1",4.1,0,1,1,0,0);
}
}
4. Теперь узнаём угол поворота камеры игрока, куда перемещаем мяч:
В свободное место от пабликов/стоков и т.п. создаём:
PHP:
GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
if (GetPlayerVehicleID(playerid))
{
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
}
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}
PHP:
if (strcmp(cmd, "/setball", true)==0)
{
DestroyObject(football);
football = CreateObject(1598, X,Y,Z, 0, 0, 0.00000000);
return 1;
}
Вот и готова наша примитивная команда перемещения обьекта по направлению камеры игрока и на определённую дистанцию, по данному уроку вы сможете создать что угодно, например "летучий голандец"...
Если вы хотите автоматизировать футбол можете сделать на проверку обьекта на определённой точке:
1. В начало мода:
PHP:
forward ObjectToPoint(Float:radi, objectid, Float:x, Float:y, Float:z);
PHP:
public ObjectToPoint(Float:radi, objectid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetObjectPos(objectid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Последнее редактирование: