Aurum

Создание пикапа входа/выхода #2

30 posts in this topic

Здравствуйте, уважаемые пользователи форума Pawno-rus.

Видел в уроках тему, заголовок которой гласит следующее: "Создание пикапа". 

Отозвались люди ( в том числе и я ) довольно негативно к данному уроку.

Я решил сделать идентичную тему, но с созданием пикапов входа/выхода.

 

Начнем-же...

 

Открываем наш мод и добавляем новую переменную. ( global )

// Ко всем new ( global ).
new vxod[2]

Возможно, у кого-то возникнет вопрос, зачем создал массив?

Ответ прост. Мы ведь хотим сделать телепорт в интерьер и обратно :o

 

Продолжим.

Ищем следующую строку:

public OnGameModeInit

Вставляем после первой скобки следующее

vxod[0] = CreatePickup(1318, 23, x,y,z,0);
vxod[1] = CreatePickup(1318, 23, x,y,z,0);

Давайте разбираться, что к чему

vxod[0] / vxod[1] - Название пикапа, или присваивание переменной функции CreatePickup.

CreatePickup - Соответственно сама функция создания пикапа.

1318 - Первый параметр функции или id пикапа. Данный id - Белая стрелка вниз.

23 - Тип пикапа. В данном случае - Взятие пикапа без пропадания.

x,y,z - Координаты нахождения пикапа. ( Дабы их узнать, в игре становимся к месту, где ходите поставить пикап и прописываете команду /save. Ваши координаты будут находится тут: Документы\GTA San Andreas User Files\CR-MP\GenerationC\saveposition ).

0 - Последний параметр функции. ID виртуального мира. По умолчанию - 0.

 

Таак-с... Пол дела сделано.

 

Теперь идем в:..

public OnPlayerPickUpPickup

И после первой скобки вставляем следующий код:

if(pickupid == vxod[0])
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ В ИНТЕРЬЕР
	SetPlayerInterior(playerid,1);
}
if(pickupid == vxod[1])
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ ВО ДВОР ( УЛИЦА )
	SetPlayerInterior(playerid,0);
}

Разбираемся, друзья.

if... Проверка на то, что игрок встал на пикап.

SetPlayerPos - Установка координат местоположения игрока. (xyz - координаты).

SetPlayerFacingAngle - Угол игрока. ( Найдете в saveposition.txt )

SetPlayerInterior - ID интерьера. Не трогать!!.

 

На этом все.

Автор урока - Aurum ( Я самый ).

Удачной компиляции без ошибок Вам, друзья B|

P/S Надеюсь меня не будут критиковать :/

Edited by Aurum

Share this post


Link to post
Share on other sites

new vxod[2];

Заметка от Guest , создано

2.9. Весь код необходимо брать под тег "код". Как это делать вы можете посмотреть в разделе: "Дополнительно -> FAQ".

Share this post


Link to post
Share on other sites
2 часа назад, Maks_Badanov сказал:

new vxod[2];

Простите.. Да.. Спешил

Share this post


Link to post
Share on other sites
@Aurum 
if(pickupid == vxod[0])
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ В ИНТЕРЬЕР
	SetPlayerInterior(playerid,1); Нужно изменить на SetPlayerInterior(playerid,0)

Edited by Maks_Badanov

Заметка от Guest , создано

2.9. Весь код необходимо брать под тег "код". Как это делать вы можете посмотреть в разделе: "Дополнительно -> FAQ".

Share this post


Link to post
Share on other sites
Только что, Maks_Badanov сказал:

@Aurum 
if(pickupid == vxod[0])
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ В ИНТЕРЬЕР
	SetPlayerInterior(playerid,1); Нужно изменить на SetPlayerInterior(playerid,)

Прошу прощения. Я думал об этом но ступил :/

Share this post


Link to post
Share on other sites
SetPlayerInterior(playerid,0)*

Заметка от Guest , создано

2.9. Весь код необходимо брать под тег "код". Как это делать вы можете посмотреть в разделе: "Дополнительно -> FAQ".

Share this post


Link to post
Share on other sites

:D проше сразу все пикапы входа через массив делать (если надо могу скинуть сюда код пример) 

Share this post


Link to post
Share on other sites

@Maks_Badanov думаю завтра скину (если время будет) 

Заметка от Guest , создано

Устно: Оффтоп Кидайте сразу все что надо, не надо писать лишнее!

Share this post


Link to post
Share on other sites

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Скриптинг PAWN > Готовые решения"

Перемещена в: "Скриптинг PAWN > Уроки"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Скриптинг PAWN > Уроки", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Share this post


Link to post
Share on other sites

 

Я Всё сделал как на на форуме но у меня выдаёт такую ошибку недопустимы токен и пытался ставить ко всем new но выбивало ошибку ниже new vxod[2] 

Помогите решить проблему с меня + Обязательно 

Спойлер

bandicam 2019-02-05 13-46-57-211.jpgbandicam 2019-02-05 13-27-41-651.jpg

Share this post


Link to post
Share on other sites

@Guska Скинь строку 1004

Share this post


Link to post
Share on other sites

Эта ошибка поевляется там куда ты поставил new vxod[2] после этих знаком в нижней сстроке появляется ошибка а именно после этих new vxod не пойму в чём проблема когда удаляешь new vxod[w2] ощибки нету

 

Спойлер

adminspec_strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

 

 

Edited by Shakoladka

Share this post


Link to post
Share on other sites

@Guska А где именно выдает ошибку?

Share this post


Link to post
Share on other sites

@Guska 

stock adminspec_strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

 

Share this post


Link to post
Share on other sites
vxod = CreatePickup(1318, 23, x,y,z,0);
CreatePickup(1318, 23, x,y,z,0);
if(pickupid == vxod)
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ В ИНТЕРЬЕР
	SetPlayerInterior(playerid,1);
}
if(pickupid == vxod+1)
{
	SetPlayerPos(playerid,x,y,z);
	SetPlayerFacingAngle(playerid,УГОЛ);        // ТЕЛЕПОРТ ВО ДВОР ( УЛИЦА )
	SetPlayerInterior(playerid,0);
}

 

Share this post


Link to post
Share on other sites

Помогите решить ошибки. плизз

Безымянный.png

Share this post


Link to post
Share on other sites
В 15.02.2019 в 22:07, Tennssy сказал:

Помогите решить ошибки. плизз

Безымянный.png


1. Автор темы, что ты написал какой нафиг угол, это координаты поворота головы персонажа и никакой не угол, код т.е Float пишется сразу после координатов XYZ.
P.S Координаты поворота головы можно найти после наших сохраненных координатов XYZ т.е после XYZ идет наш координат поворота головы!
2. Проблема в пропущенной или же в лишней скобке "]" - ";"
P.S Пользователи выше, что за чушь вы несете которая никак не связанна с ошибкой, там ясно в первом скрине написано что лишняя скобке или же точка запятая..

Edited by #Copyright

Заметка от odosenok , создано

Следует быть более сдержанным и уметь держать себя в руках.

Share this post


Link to post
Share on other sites

@#Copyright ты не прав. SetPlayerFacingAngle - уго поворота всего тела персонажа, а не только головы. 

Так же советую использовать функцию "SetCameraBehindForPlayer", функция, которая ставит нашу камеру ровно позади персонажа, полезная штука.

Share this post


Link to post
Share on other sites
10 часов назад, SCRIPTMAN сказал:

@#Copyright ты не прав. SetPlayerFacingAngle - уго поворота всего тела персонажа, а не только головы. 

Так же советую использовать функцию "SetCameraBehindForPlayer", функция, которая ставит нашу камеру ровно позади персонажа, полезная штука.


Я все правильно сказал, может тема разговора у нас разная, я говорю про SA:MP, ты наверное про CRMP

Share this post


Link to post
Share on other sites

@#Copyright да какая разница, самп или крмп. Вот тебе обозначение функции на samp wiki. Угол поворота персонажа игрока. 

Screenshot_20190304-122626.png

Share this post


Link to post
Share on other sites
В 18.11.2017 в 18:46, Aurum сказал:

SetPlayerFacingAngle(playerid,УГОЛ); // ТЕЛЕПОРТ ВО ДВОР ( УЛИЦА )

Смотри, это координаты как будет стоять фейс, в чем проблема?

Share this post


Link to post
Share on other sites

@#Copyright не фейс, а целое тело, сам персонаж. 

Share this post


Link to post
Share on other sites

@Aurum 

Я не знаю, что я делаю не так, но  у меня проблема. Мод компилируется нормально, вроде как всё норм, но...

В самой игре, пикап входа, телепортирует не туда куда нужно, хотя, координаты указаны без ошибок. Пикап телепортирует на крышу какого-то здания, в ЛС, должен телепортировать в другое место. Ошибок, варнингов никаких нет. Правильность координат проверял трижды.

С пикапом выхода никаких проблем нет, он делает то что нужно, а вот со входом что?

Код:

new pturma[2];
//////////////
public OnGameModeInit()
{
	PlayerInfo[MAX_PLAYERS][pBeg][0] = -1;
	PlayerInfo[MAX_PLAYERS][pBeg][3] = 0;
	pturma[0] = CreatePickup(1318,23,-2341.1501,-1629.6201,483.7018);
	pturma[1] = CreatePickup(1318,23,-2282.6350,-1616.7341,907.4961);
/////////////////////
public OnPlayerPickUpPickup(playerid, pickupid)
{
	if(pickupid == pturma[0]) // ????
	{
	J_SetPlayerPos(playerid,-2282.9053,-1617.1791,907.1784);
	SetPlayerInterior(playerid,0); // указывал и 1 и 0 - толку нет
	}
	if(pickupid == pturma[1]) // ?????
	{
	SetPlayerPos(playerid,-2338.9524,-1629.5006,483.4784);
	SetPlayerInterior(playerid,0);
	}

Прошу помочь, т.к. не нашёл проблему.
P.S.

Строка с 

" J_SetPlayerPos(playerid,-2282.9053,-1617.1791,907.1784); "

А именно где "J_" - это результат моего эксперимента . Но даже без "J_" ничего не работало, телепорт не туда куда надо.

Edited by nefimov1
Причина: PS

Share this post


Link to post
Share on other sites

@nefimov1, а можно координаты того места, куда нужно телепортировать (я так полагаю интерьер) и откуда (место входа в здание, видимо)? Имеется в виду для того пикапа, который работает, как вы говорите, неверно. И еще, когда будешь в том месте, куда нужно попасть, введи /interior, чтобы получить ID интерьера, в котором ты находишься в этот момент.

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • odosenok
      By odosenok
      Уже давно на просторах интернета летает эксплоит от SA:MP 0.3e. Он позволял выполнить любой код на ассемблере на удаленной машине (сторона игрока, клиент). Однако, выполнять можно было этот код с некоторыми оговорками: 
      В коде надо было избегать нулей (так как экплоит был строкой для TD) В конце исполнения кода возвращения из стека не происходило (игра завершалась ошибкой).  
      Поскольку CR основана на версии 0.3e, эксплоит работает и на ней. Игра в этом варианте немного защищена adapt.dll (закрыта возможность хуков) и изменен gta_sa.exe (в код внесены 1024 байта неизвестной природы). Я был очень удивлен, что за все время существования такой дыры, ее никто толком не использовал
       
      Эксплоит в моем исполнении немного доведен до ума. Что есть на данный момент? Эксплоит, выполнясь на стороне клиента, выполняет следующие действия:
      Открывает потоковый сокет, скачивает с сервера .dll, загружает ее в память игры Если в процессе этого происходит какая либо ошибка игра закрывается Если все прошло успешно, игра продолжает работать, а выполненый код (сам эксплоит) выгружается  
      Что сейчас умеет загружаемая .dll?
      Взятие аппаратных ключей через утилиту "wmic". Полный доступ к адресному пространству процесса (можно модифицировать игру изнутри). Доступ к машине на уровне прав выполнения игры (скачивание/загрузка файлов)  
      Так как все три выше изложенных пункта включают в себя доступ к компьютеру, перед каким либо вмешательством поступает запрос на одобрение действий. В моем варианте запрашивается доступ к процессу и к папке с игрой
      Что уже есть на базе этого всего? 
      Контроль и модификация пакетов RakNet в обе стороны. Возможность общаться между клиентом и сервером текстом в моде на сервере, например, PluginSend(playerid, "$set_gravity 0.6"), или что-то такое. Главное - понимание, что функция выполнения этой строки будет заложена в .dll. В данный момент через $fullinfo можно получить данные о процессоре, видеокарте, материнской плате, всех носителях и другом установленном оборудовании. Система аккаунтов, наказаний и персонажей. При заходе игрока сервер уже знает, кто присоединился, и, однозначно идентифицируя игрока, проверяет его наказания, выдает ему список персонажей (пресетов скин, цвет, ник, статистика) для игры. Конфигуратор оружейных настроек. Позволяет менять дамаг, точность, магазин, анимации, разброс, скорость стрельбы, ношение одного или двух орудий. Конфигуратор палитры цветов транспорта. Позволяет манипулировать всеми слотами цветов транспорта, делать переливающиеся или мигающие цвета (в реальном времени) по RGB.  
      Таким образом данный эксплоит представляет собой плагин, способный манипулировать клиентом, причем делается это не через средства самого сервера и Pawn, а напрямую на целевой машине. По сему здесь важно понимать, что уязвимость, позволяющая работать с клиентом напрямую, является очень перспективной.
       
      Все вышеизложенное дает мне надежду на то что, что с игрой GTA Criminal Russia не все кончено, и силами разработчиков можно привнести в нее новых красок, по сему я бы хотел пообщаться с вами и по возможности создать сервер для совместных поделок на базе CR. Так как сама игра в ее текущем варианте умирает, ей нужен либо новый виток развития, либо забвение (чего я не особо хочу).
       
      Всех заинтересовавшихся прошу в личные сообщения @Iku Seiko, telegram @romuwka или discord ikuseiko#0491.
    • sweet
      By sweet
      Хелп,при компиле выдает ошибку C:\Users\PC\Desktop\pawno\pawno\include\objects.inc(1104) : error 029: invalid expression, assumed zero
      Сама строка в которой ошибка:    {-2032.7073,-73.8643,35.2484, -2006.3911,-52.6238,35.2704},
      Закройте тему,проблема решилась сама по себе