RU/createExplosion

From Multi Theft Auto: Wiki
Revision as of 15:01, 16 September 2014 by MeowCola (talk | contribs) (Created page with "__NOTOC__ {{RU/Server client function}} Создаёт взрыв определённого типа в указанной точке игрового мира. Если с...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Создаёт взрыв определённого типа в указанной точке игрового мира. Если создатель указан, взрыв будет произведён только в его измерении.

Синтаксис

Click to collapse [-]
Сервер
bool createExplosion ( float x, float y, float z, int theType [, player creator = nil ] )

Обязательные аргументы

  • x: Вещественное число, указывающее координату X, на которой будет создан взрыв.
  • y: Вещественное число, указывающее координату Y, на которой будет создан взрыв.
  • z: Вещественное число, указывающее координату Z, на которой будет создан взрыв.
  • theType: Целое число, указывающее тип взрыва. Доступные типы:
    • 0: Граната
    • 1: Молотов
    • 2: Ракета
    • 3: Слабая ракета
    • 4: Автомобиль
    • 5: Автомобиль (быстрый)
    • 6: Лодка
    • 7: Вертолёт
    • 8: Мина
    • 9: Объект
    • 10: Танковый снаряд
    • 11: Маленький
    • 12: Крохотный


Необязательные аргументы

  • creator: Создатель взрыва, игрок ответственный за него.
Click to collapse [-]
Клиент
bool createExplosion ( float x, float y, float z, int theType [, bool makeSound = true, float camShake = -1.0, bool damaging = true ] )

Обязательные аргументы

  • x: Вещественное число, указывающее координату X, на которой будет создан взрыв.
  • y: Вещественное число, указывающее координату Y, на которой будет создан взрыв.
  • z: Вещественное число, указывающее координату Z, на которой будет создан взрыв.
  • theType: Целое число, указывающее тип взрыва. Доступные типы:
    • 0: Граната
    • 1: Молотов
    • 2: Ракета
    • 3: Слабая ракета
    • 4: Автомобиль
    • 5: Автомобиль (быстрый)
    • 6: Лодка
    • 7: Вертолёт
    • 8: Мина
    • 9: Объект
    • 10: Танковый снаряд
    • 11: Маленький
    • 12: Крохотный


Необязательные аргументы

  • makeSound: Логическое значение, указывающее на слышимость взрыва.
  • camShake: Вещественное число, указывающее интенсивность тряски камеры.
  • damaging: Логическое значение, указывающее, должен ли взрыв наносить урон.

Возвращает

  • true, если взрыв был создан.
  • false, если были указаны неверные параметры.

Пример

Click to collapse [-]
Сервер

Пример 1: Этот код создаст взрыв на позиции игрока при его появлении.

function explosionOnSpawn ( )
  -- получаем позицию появившегося игрока
  local pX, pY, pZ = getElementPosition ( source )
  -- и создаём там взрыв, указав игрока как создателя
  createExplosion ( pX, pY, pZ, 6, source )
end
-- добавляем обработчик события
addEventHandler ( "onPlayerSpawn", getRootElement(), explosionOnSpawn )

Пример 2: Этот пример позволяет создавать мины.

function createClaymore ( creator )
	local x, y, z = getElementPosition ( creator )
	local claymoreObject = createObject ( 1945, x, y, z - 1, 0, 0, 90 ) --создаём объект
	local claymoreCol = createColSphere ( x, y, z, 1 ) --создаём сферу столкновения с радиусом 1
	setElementData ( claymoreCol , "type", "claymore" ) --сохраняем тип сферы
	setElementData ( claymoreCol, "object", claymoreObject ) --сохраняем объект
	setElementData ( claymoreCol, "creatorPlayer", creator ) --сохраняем создателя
end

function claymoreHit ( player )
	if getElementData ( source, "type" ) == "claymore" then --убедимся, что это мина
		--получаем объект мины и создателя
		local claymoreObject = getElementData ( source, "object" )
		local claymoreCreator = getElementData ( source, "creatorPlayer" )
		--получаем позицию мины
		local x, y, z = getElementPosition ( source )
		createExplosion ( x, y, z, 12, claymoreCreator ) --создаём взрыв, связанный с создателем, маленького размера на позиции мины
		--уничтожаем объект мины и сферу столкновения, чтобы мина не взорвалась снова
		destroyElement ( claymoreObject )
		destroyElement ( source )
	end
end
addEventHandler ( "onColShapeHit", getRootElement(), claymoreHit )

Пример 3: Вызывает взрыв, который не нанесёт урона игроку.

function fakeBombAt(el)
	if isElement(el) then
		local x,y,z = getElementPosition(el)
		triggerClientEvent ( "fakeBomb", getRootElement(), x, y, z, 0 )
	end
end

function onPlayerSpawnEvent(spawnpoint, team)
	fakeBombAt(source)
end

function onPlayerQuitEvent(reason)
	fakeBombAt(source)
end

function onPlayerDiedEvent(totalAmmo, killer, killerWeapon, bodypart)
	setTimer(fadeCamera, 2000, 1, source, false)
	fakeBombAt(source)
	setTimer(spawnPlayer, 4000, 1, source, 0, 0, 0)
	setTimer(fadeCamera, 4500, 1, source, true)
end

addEventHandler("onPlayerQuit",getRootElement(), onPlayerQuitEvent)
addEventHandler("onPlayerWasted",getRootElement(), onPlayerDiedEvent)
addEventHandler("onPlayerSpawn",getRootElement(), onPlayerSpawnEvent)
Click to collapse [-]
Клиент

Пример 1: Этот код создаст взрыв для локального игрока при его появлении.

function explosionOnSpawn ( )
  -- получаем позицию появившегося игрока
  local pX, pY, pZ = getElementPosition ( source )
  -- и создаем там взрыв
  createExplosion ( pX, pY, pZ, 6 )
end
-- добавляем обработчик события
addEventHandler ( "onClientPlayerSpawn", getLocalPlayer(), explosionOnSpawn )

Пример 2: Вызывает взрыв, который не нанесёт урона игроку.

function fakeBomb(x,y,z,d)
	if d then --Проверим измерение игрока
		if getElementDimension(getLocalPlayer()) == d then
                        --Если измерение игрока соответствует текущему
                        --Тогда люди в других измерениях не увидят этот взрыв
			createExplosion(x, y, z, 0, true, -1.0, false)
		end
	else
		createExplosion(x,y,z,0,true,-1.0,false)
	end
end
addEvent("fakeBomb",true)
addEventHandler("fakeBomb",getRootElement(),fakeBomb)

Смотрите также