- SamPawno
- Система личных авто
- Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система личного автомобиля — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система транспорта (+ авторынок) — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система автомобилей — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Тема: Система личного транспорта.
- Система личного транспорта.
SamPawno
Система личных авто
Описание: Уроки по скриптингу
Модератор: SJplayer
#1 Дим » 6 мая 2013, 11:36
Система личных авто
Автор: Kurt.Cobain
Вообщем суть такова.
Прописываешь /truck — покупаешь автомобиль (если нету) потом если есть автомобиль то в /truck появляется строка » Взять автомобиль » т.е автомобиль ТП к вам и автоматически садитесь в него.
Есть мини информация о автомобиле, я сделал 5 ТС для покупки.
#define CAR_INFO 1488
new LichCar [ MAX_VEHICLES ];
new createdvehs ;
new CarInfo [ MAX_PLAYERS ];
PlayerInfo [ playerid ][ pCarc ] = 0 ;
Далее сделайте сохранение для pCarc
case CAR_INFO + 1 : //КАР ИНФО
<
if( response )
<
if( strval ( inputtext ) 1 || strval ( inputtext ) > 5 ) return SCM ( playerid , — 1 , «Неверный номер.» );
if( strval ( inputtext ) == 1 )
<
if( PlayerInfo [ playerid ][ pCash ] 10000 ) return SCM ( playerid , — 1 , «У вас не достаточно денег» );
PlayerInfo [ playerid ][ pCarc ] = 411 ;
SCM ( playerid , — 1 , «Вы успешно приобрели <42aaff>INFERNUS
>
if( strval ( inputtext ) == 2 )
<
if( PlayerInfo [ playerid ][ pCash ] 20000 ) return SCM ( playerid , — 1 , «У вас не достаточно денег» );
PlayerInfo [ playerid ][ pCarc ] = 522 ;
SCM ( playerid , — 1 , «Вы успешно приобрели <42aaff>NRG-500
>
if( strval ( inputtext ) == 3 )
<
if( PlayerInfo [ playerid ][ pCash ] 30000 ) return SCM ( playerid , — 1 , «У вас не достаточно денег» );
PlayerInfo [ playerid ][ pCarc ] = 521 ;
SCM ( playerid , — 1 , «Вы успешно приобрели <42aaff>FCR-900
>
if( strval ( inputtext ) == 4 )
<
if( PlayerInfo [ playerid ][ pCash ] 40000 ) return SCM ( playerid , — 1 , «У вас не достаточно денег» );
PlayerInfo [ playerid ][ pCarc ] = 560 ;
SCM ( playerid , — 1 , «Вы успешно приобрели <42aaff>SULTAN
>
if( strval ( inputtext ) == 5 )
<
if( PlayerInfo [ playerid ][ pCash ] 50000 ) return SCM ( playerid , — 1 , «У вас не достаточно денег» );
PlayerInfo [ playerid ][ pCarc ] = 477 ;
SCM ( playerid , — 1 , «Вы успешно приобрели <42aaff>ZR-350
>
>
else return 1 ;
>
case CAR_INFO :
<
if(! response ) return 1 ;
switch( listitem )
<
case 0 :
<
if( PlayerInfo [ playerid ][ pCarc ] == 0 ) return SCM ( playerid ,- 1 , «У вас нет автомобиля» );
new ttext [ 10 ];
switch( PlayerInfo [ playerid ][ pCarc ])
<
case 411 : ttext = «10.000$» ;
case 522 : ttext = «20.000$» ;
case 521 : ttext = «30.000$» ;
case 560 : ttext = «40.000$» ;
case 477 : ttext = «50.000$» ;
>
new string [ 1044 ], text [ 256 ];
format ( text , sizeof ( text ), «<42aaff>CТАТИСТИКА:\n\n» ), strcat ( string , text );
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
ShowPlayerDialog ( playerid , 1488 , DIALOG_STYLE_MSGBOX , «Информация» , string , «Закрыть» , «» );
>
case 1 :
<
new string [ 1044 ], text [ 256 ];
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «ввести номер присвоенный к данной модели транспорта\n\n» ), strcat ( string , text );
format ( text , sizeof ( text ), «№ 1 — Infernus\t |\t
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
format ( text , sizeof ( text ), «
ShowPlayerDialog ( playerid , CAR_INFO + 1 , DIALOG_STYLE_INPUT , «Покупка автомобиля» , string , «Купить» , «Закрыть» );
>
case 2 :
<
new Float : Xx , Float : Yy , Float : Zz ;
GetPlayerPos ( playerid , Xx , Yy , Zz );
LichCar [ createdvehs ] = CreateVehicle ( PlayerInfo [ playerid ][ pCarc ], Xx , Yy , Zz , 0.0 , 1 , 2 , 60000 );
CarInfo [ playerid ] = 1 ;
PutPlayerInVehicle ( playerid , LichCar [ createdvehs ], 0 );
>
>
>
Источник статьи: http://sampawno.ru/viewtopic.php?t=336
Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система личного автомобиля — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Pawn скриптинг
- Школа скриптинга
- Уроки
- Правила форума
- Просмотр новых публикаций
- Группа: Активные пользователи
- Сообщений: 1 774
- Регистрация: 28 декабря 15
В этом уроке мы на учимся привязывать автомобиль к игроку
Приступим:
Ко всем new добавим 1 переменную для автомобиля:
Дальше мы идём в OnGameModeInit() и добавим строку
0,0 это цвет кара
Дальше идём в public OnPlayerStateChange(playerid, newstate, oldstate)
И добавим следующие строки:
Функция проверки ника
В принципе всё кому не понятно пишите
Сообщение отредактировал Vitya: 05 января 2016 — 01:22
- Группа: Vip
- Сообщений: 5 581
- Регистрация: 09 января 13
Vitya (05 января 2016 — 01:19) писал:
В этом уроке мы на учимся привязывать автомобиль к игроку
Приступим:
Ко всем new добавим 1 переменную для автомобиля:
Дальше мы идём в OnGameModeInit() и добавим строку
0,0 это цвет кара
Дальше идём в public OnPlayerStateChange(playerid, newstate, oldstate)
И добавим следующие строки:
Функция проверки ника
В принципе всё кому не понятно пишите
Но игрок же все равно сядет в авто на 1 сек. Это не по рп.
Сообщение отредактировал m1n1vv: 05 января 2016 — 01:25
Источник статьи: http://pawn-wiki.ru/index.php?/topic/29964-sistema-lichnogo-avtomobilja/
Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система транспорта (+ авторынок) — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Pawn скриптинг
- Школа скриптинга
- Готовые решения
- Правила форума
- Просмотр новых публикаций
- (5 Страниц)
- 1
- 2
- 3
- >
- Последняя »
- Вы не можете создать новую тему
- Вы не можете ответить в тему
- Группа: Администраторы
- Сообщений: 2 621
- Регистрация: 13 октября 11
Простая система транспорта, предназначена для игровых режимов с 0. Система подойдет отлично для DM,TDM режимов, а может и для RPG.
Возможности администратора :
— Добавление транспорта из игры (при добавлении транспорта если указать цену равную 0, то транспорт будет доступен всем) = /acreateveh;
— Припарковать любой транспорт = /avpark;
Возможности игроков :
— Управление транспортом: завести / заглушить, включить / выключить фары, открыть / закрыть багаж, капот = /eng, /lights, /bonnet, /boot;
— Продажа транспорта = /vsell;
— Продажа транспорта другому игроку = /vsellto;
— Закрывать /открывать замки транспорта = /vlock;
— Парковка транспорта = /vpark;
— Возможность иметь неограниченное кол-во личного транспорта;
• Шаг 1 : ко всем define’s добавляем :
• Шаг 2 : в начало мода, ко всем переменным (new’s) добавляем :
• Шаг 3 : в конец мода добавьте функции :
• Шаг 4 : в OnPlayerCommandText :
• Шаг 5 : в OnPlayerDialogResponse :
• Шаг 6 : в OnPlayerStateChange добавляем :
• Шаг 7 : в OnGameModeInit :
• Шаг 8 : в OnPlayerSpawn :
• Шаг 9 : все необходимое для работы скрипта :
Для корректной работы скрипта вам понадобится плагин sscanf и библиотека mxINI:
(по поводу установки можете посмотреть в этом уроке: перейти)
Так же, в папку scriptfiles поставьте это (папку vehicles): vehicles.rar [193байт]
Не забудьте поставить проверки на администратора в нужных местах (я отметил комментариями), и, в OnDialogResponse используется switch, поэтому вместо if(dialogid==D_V_SELL_TO) стоит case D_V_SELL_TO. Возможно, что ид диалогов которые я указал в константах уже будут заняты в вашем моде, в этом случае стоит их изменить.
Источник статьи: http://pawn-wiki.ru/index.php?/topic/12671-sistema-transporta-avtorinok/
Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Система автомобилей — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- Pawn скриптинг
- Первая помощь
- Вопросы по скриптингу
- Правила форума
- Просмотр новых публикаций
- Группа: Пользователи
- Сообщений: 4
- Регистрация: 18 февраля 20
Здраствуйте, пытался сделать систему личного авто, но что-то не выходит, вроде бы уже разобрался с сохранением в базу данных, но появляются новые проблемы: то координаты транспорта не сохраняются.
Вообщем я понял проблему: у меня не получается связать vehicleid и cId.
Вот все что получилось сделать
И часть кода которой я пытался сохранить последнюю позицию авто
- Группа: Активные пользователи
- Сообщений: 3 169
- Регистрация: 14 марта 12
Тебе нужно сначала выгружать данные из БД во временные локальные переменные, после создавать автомобиль на основе этих данных, записывать его ID и уже этот ID использовать в качестве индекса для массива CarInfo.
Источник статьи: http://pawn-wiki.ru/index.php?/topic/49599-sistema-avtomobilei/
Тема: Система личного транспорта.
Опции темы
Поиск по теме
Система личного транспорта.
Всем привет. Пишу систему личного ТС с 0. (MqSql r34)
Я наслышан, что ТС лучше начинать от ID 1. Это так, к слову.
Всё было хорошо до того момента, когда игрок покупает транспорт.
Суть проблемы такова:
На сервере 3 машины (ID 1, ID 2, ID 3). Игрок покупает машину с ID 2, но после покупки, машина с ID 2 остается не проданной (3D-Text не меняется), а машина с ID 3 приобретает 3D-text купленной машины ID 2 (Владелец: Camelot\n ID: 2).
Не уверен, что вы меня поняли, но суть самой проблемы должна быть понятна. Я уже 3-й день не могу понять. Может вы мне поможете.
public OnGameModeInit ()
<
mysql_function_query ( cHandle , «SELECT * FROM `Cars`» , true , «BuyCarsLoad» , «» );
>
const MAX_BUYCARS = 3 ;
enum cInfo < veh , ID , Owner [ 20 ], Model , Level , Price , Clr1 , Clr2 , Float : X , Float : Y , Float : Z , Float : A , Float : Heal , Dmg1 , Dmg2 , Dmg3 , Dmg4 , PJob , Text3D : Text >
new carInfo [ MAX_BUYCARS ][ cInfo ], allCars ;
publics : BuyCarsLoad ()
<
new timewe = GetTickCount ();
cache_get_data ( rows , fields );
if(! rows ) return print( «Error: Личный транспорт — Таблица пуста» );
for(new car ; car != rows ; car ++)
<
carInfo [ car ][ ID ] = getint ( car , «ID» );
carInfo [ car ][ Model ] = getint ( car , «Model» );
carInfo [ car ][ Level ] = getint ( car , «Level» );
carInfo [ car ][ Price ] = getint ( car , «Price» );
carInfo [ car ][ Clr1 ] = getint ( car , «Clr1» );
carInfo [ car ][ Clr2 ] = getint ( car , «Clr2» );
carInfo [ car ][ X ] = getpos ( car , «X» );
carInfo [ car ][ Y ] = getpos ( car , «Y» );
carInfo [ car ][ Z ] = getpos ( car , «Z» );
carInfo [ car ][ A ] = getpos ( car , «A» );
carInfo [ car ][ Heal ] = getpos ( car , «Heal» );
carInfo [ car ][ Dmg1 ] = getint ( car , «Dmg1» );
carInfo [ car ][ Dmg2 ] = getint ( car , «Dmg2» );
carInfo [ car ][ Dmg3 ] = getint ( car , «Dmg3» );
carInfo [ car ][ Dmg4 ] = getint ( car , «Dmg4» );
carInfo [ car ][ PJob ] = getint ( car , «PJob» );
getstr ( car , «Owner» , carInfo [ car ][ Owner ], MAX_PLAYER_NAME );
BuyCarsCreate ( car ), allCars ++;
>
return printf ( «Загружено личных машин: %i. Времени затрачено: (%i мс)» , allCars , GetTickCount ()- timewe );
>
stock BuyCarsCreate ( car )
<
carInfo [ car ][ veh ] = CreateVehicle ( carInfo [ car ][ Model ], carInfo [ car ][ X ], carInfo [ car ][ Y ], carInfo [ car ][ Z ], carInfo [ car ][ A ], carInfo [ car ][ Clr1 ], carInfo [ car ][ Clr2 ], 0 );
UpdateVehicleDamageStatus ( carInfo [ car ][ veh ], carInfo [ car ][ Dmg1 ], carInfo [ car ][ Dmg2 ], carInfo [ car ][ Dmg3 ], carInfo [ car ][ Dmg4 ]);
SetVehicleHealth ( carInfo [ car ][ veh ], carInfo [ car ][ Heal ]);
static const
fmt1 [] = ««Стоимость: %d $» \n«Уровень: %d»\nID: %d» ,
fmt2 [] = «
new msg [ sizeof ( fmt2 ) — 2 + MAX_PLAYER_NAME — 2 + 4 ];
if( carInfo [ car ][ PJob ] > 0 ) ChangeVehiclePaintjob ( carInfo [ car ][ veh ], carInfo [ car ][ PJob ]- 1 );
else if(! strcmp ( carInfo [ car ][ Owner ], «No Name» )) format ( msg , sizeof ( msg ), fmt1 , carInfo [ car ][ Price ], carInfo [ car ][ Level ], carInfo [ car ][ ID ]);
else format ( msg , sizeof ( msg ), fmt2 , carInfo [ car ][ Owner ], carInfo [ car ][ ID ]);
carInfo [ car ][ Text ] = Create3DTextLabel ( msg , 0xFF0000FF , 0 , 0 , 0.6 , 15 , 0 , 1 );
return Attach3DTextLabelToVehicle ( carInfo [ car ][ Text ], carInfo [ car ][ veh ], 0 , 0 , 0.6 );
>
Редактировать пост почему-то нельзя. Опечатка там. MySql r34.
Сонный я уже. Не подумал о том, что вам будет сложно читать. Сократил код для читабельности.
Источник статьи: http://pro-pawn.ru/showthread.php?9929-%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%D0%B3%D0%BE-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B0