Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Делаем игру в футбол

Статус
В этой теме нельзя размещать новые ответы.

SanStar

Изучающий
Пользователь
Регистрация
4 Окт 2011
Сообщения
221
Лучшие ответы
0
Репутация
84
Футбол в SA:MP? Это реально!
1. Создаём в начале мода переменную:
PHP:
new football;
2. Создаём мяч как обьект в public OnGameModeInit:
PHP:
football = CreateObject(1598,X,Y,Z,0.00000000,0.00000000,0.00000000);
X,Y,Z - Координаты мяча.
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);
		}
	}
На кнопку Alt/ПКМ(Правая Кнопка Мыши)/Ctrl, можно бить мяч. (Если что, можно сделать на другую кнопку, или если она у вас уже используется, просто внести PlayerToPoint в состав как if else...)
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));
}
5. Делаем респаун мяча по команде, на всякий случай:
PHP:
	if (strcmp(cmd, "/setball", true)==0)
	{
		DestroyObject(football);
		football = CreateObject(1598, X,Y,Z, 0, 0, 0.00000000);
		return 1;
	}
X,Y,Z - Координаты мяча.
Вот и готова наша примитивная команда перемещения обьекта по направлению камеры игрока и на определённую дистанцию, по данному уроку вы сможете создать что угодно, например "летучий голандец"...

Если вы хотите автоматизировать футбол можете сделать на проверку обьекта на определённой точке:
1. В начало мода:
PHP:
forward ObjectToPoint(Float:radi, objectid, Float:x, Float:y, Float:z);
2. В конец мода:
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;
}
Данную проверку можно использовать аналогично функции PlayerToPoint ;)...
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу