Перейти к содержимому


Фотография

[GTA IV | EFLC | C++SH] Езда по стенам


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 VcSaJen

VcSaJen

    Активный участник

  • Пользователи
  • PipPipPip
  • 270 сообщений
  • Пол:Мужчина
  • Интересы:GTA, скриптинг в GTA.


Отправлено 05 July 2011 - 06:41

Т.к. новая Алиса находится только в стране чудес, я планирую перенести все свои скрипты на C++ Script Hook.
Первым я перенёс скрипт для езды по стенам.

Управление:
Включить/выключить - клавиша "Э"
Подпрыгнуть - клавиша "Ж"
Ускориться - клавиша Shift

Этот скрипт поддерживает GTAIV 1.0.7.0 и EFLC 1.1.2.0.

Установка:
Просто скопируйте содержимое архива в папку игры. (XLiveLess (рекомендуется) или ASILoader должен быть установлен)

Скриншоты:
Изображение Изображение Изображение

Вот кусок исходника:
#include "CustomFiberThread.h"
#include "../Sticky/Scripting.h"
#include "../ScriptHook/Log.h"


#include <windows.h>

// Pull in all our scripting functions/types
using namespace Scripting;

CustomFiberThread::CustomFiberThread()
{
	// Give your own name here!
	SetName("Sticky");
}

// Some helper functions

/*...*/

bool CustomFiberThread::KeyPressed(int key)
{
  return (GetKeyState(key) & 0x80000000) != 0;
}

// The real script

void CustomFiberThread::RunScript()
{
  // This is a fiber thread, so we use an loop to run the contents of this script.
  // The thread will terminate when we return from this function.
  int PlayerId;
  Scripting::Ped PlayerChar;
  Scripting::Vehicle PlayerCar;
  unsigned int SCurTime, SLastTime;
  float UpperForce=0.65f;
  bool on=false;
  SLastTime=0;

  while(IsThreadAlive())
  {
	PlayerId = GetPlayerId();
	if (PlayerId >= 0)
	if (IsPlayerPlaying(PlayerId))
	if (PlayerHasChar(PlayerId))
	{
	  GetPlayerChar(PlayerId, &PlayerChar);
	  if (*((int*)(&PlayerChar))>0)
	  {
		if (IsCharInAnyCar(PlayerChar))
		{
		  StoreCarCharIsInNoSave(PlayerChar, &PlayerCar);
		  while (IsThreadAlive() && IsPlayerPlaying(PlayerId) && IsCharInCar(PlayerChar, PlayerCar))
		  {
			if (on)
			{
			  GetGameTimer(&SCurTime);
			  if (!IsCarInAirProper(PlayerCar))
			  {
				GetGameTimer(&SLastTime);
			  }

			  if (KeyPressed(VK_OEM_1) && (SCurTime-SLastTime<400))
			  {
				ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,2.0,0.0,1,1,1,1);
				//Wait(90);
				//ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,1.0,0.0,1,1,1,1);
			  }
			  if (KeyPressed(VK_SHIFT) && (SCurTime-SLastTime<400))
			  {
				if (KeyPressed('S'))
				  ApplyForceToCar(PlayerCar,1,0.0,-1.0,0.0,0.0,0.0,0.0,1,1,1,1);
				else 
				  ApplyForceToCar(PlayerCar,1,0.0,1.0,0.0,0.0,0.0,0.0,1,1,1,1);
				
				//Wait(90);
				//ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,1.0,0.0,1,1,1,1);
			  }

			  //ShowText(IntToStr(SCurTime-SLastTime),100);
			  if (SCurTime-SLastTime<500)
			  {
				ApplyForceToCar(PlayerCar,1,0.0,0.0,UpperForce,0.0,0.0,0.0,1,0,1,1);
				ApplyForceToCar(PlayerCar,1,0.0,0.0,-UpperForce,0.0,0.0,0.0,1,1,1,1);
			  }
			}
			if (KeyPressed(VK_OEM_7))
			{
			  on=!on;
			  if (on) PrintStringWithLiteralStringNow("string", "Sticky activated", 1500, 1);
			  else	PrintStringWithLiteralStringNow("string", "Sticky deactivated", 1500, 1);
			  while (IsThreadAlive() && KeyPressed(VK_OEM_7)) Wait(100);
			}
			Wait(25);
		  }
		  if (on) PrintStringWithLiteralStringNow("string", "Sticky deactivated", 1500, 1);
		  on=false;

		}
	  }
	}

	// Call Wait() so we can process other scripts/game code
	// You must call Wait(...) in your loop code for a fiber thread!
	Wait(100);
  }
}
(Весь исходник можно скачать здесь: Прикрепленный файл  SourceSticky.rar   300.42К   7 загрузок)

Скрипт находится в аттаче:
Прикрепленный файл  Sticky.rar   147.82К   5 загрузок

#2 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 05 July 2011 - 10:34

Ха! Занятно, на выходных протестировать постараюсь :D а присутствует такой лаг, когда на мотоцикле вверх направляешь он не падает а в небо летит?

#3 VcSaJen

VcSaJen

    Активный участник

  • Пользователи
  • PipPipPip
  • 270 сообщений
  • Пол:Мужчина
  • Интересы:GTA, скриптинг в GTA.


Отправлено 05 July 2011 - 11:53

Когда встаёшь на заднее колесо, тогда ускоряется, когда перевернёшь - подпрыгнет. Из-за особенностей движка GTA4 мотоцикл будет смещаться вбок при повороте.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных