Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Дом на колесах (by: Saibot) - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

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

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Дом на колесах (by: Saibot)
Оценка: -----

#1
Пользователь офлайн   Saibot 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Дом на колесах

Обновление v 0.4 [Показать]

Обновление v 0.5 [Показать]

Обновление v 0.6 [Показать]

Обновление v 0.7 [Показать]

Обновление v 0.8 [Показать]

Обновление v 0.9 [Показать]


Добавление нового интерьера

static const gCamperClass[][e_CamperClass] =
{
    /*Название | Инт | Цена | Координаты спавна в инте*/
    {"Дешевый вариант", 1, 50000, 2512.7520, -1729.1099, 778.6371, 89.3518},
    {"Средний вариант", 1, 100000, 2483.1226, -871.6552, 2883.3989, 3.8108}
    {"Тут название вашего нового инта", Интерьер, Цена, x, y, z, a}
};


Установка:​
Ко всем include
#include <camper>


В OnGameModeInit после подключения к БД
Camper_SetMysqlConnectionHandle(/*переменная для подключения*/); //Например dbHandle


В самый конец OnPlayerSpawn добавляем:
OnPlayerSpawnCamper(playerid);


В конец мода
//Деньги
stock GetPlayerMoneyCMP(playerid)
	return PlayerInfo[playerid][pMoney]; //PlayerInfo[playerid][pMoney] Меняем на свое

stock SetPlayerMoneyCMP(playerid, cmp_money)
{
	PlayerInfo[playerid][pMoney] += cmp_money; //PlayerInfo[playerid][pMoney] Меняем на свое
	//Делаем сохранение
}

//Маты
stock GetPlayerMatsCMP(playerid)
	return PlayerInfo[playerid][pMats]; //PlayerInfo[playerid][pMats] Меняем на свое

stock SetPlayerMatsCMP(playerid, cmp_mats)
{
	PlayerInfo[playerid][pMats] += cmp_mats; //PlayerInfo[playerid][pMats] Меняем на свое
	//Делаем сохранение
}

//Наркотики
stock GetPlayerDrugsCMP(playerid)
	return PlayerInfo[playerid][pDrugs]; //PlayerInfo[playerid][pDrugs] Меняем на свое

stock SetPlayerDrugsCMP(playerid, cmp_drugs)
{
	PlayerInfo[playerid][pDrugs] += cmp_drugs; //PlayerInfo[playerid][pDrugs] Меняем на свое
	//Делаем сохранение
}


Закидываем таблицу в базу данных.
Таблица и файл - находятся в архиве.


Файл >> camper


Автор: Saibot

Изображение Изображение Изображение Изображение Изображение Изображение Изображение

Сообщение отредактировал Saibot: 01 апреля 2022 - 19:14

3

#2
Пользователь офлайн   samperonline 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
шикарная система я себе ее взял :yes: :yes: :yes: :yes:


во
Изображение

я себе чуть текст переделал, и цвета под мод, а в остальном топчег
1

#3
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Цитата

Camper_SetMysqlConnectionHandle


А почему бы не перехватить mysql_connect и mysql_connect_file?

Ну и заодно стоило бы упомянуть о зависимости от стримера/foreach и о том, что инклуд нужно подключать после них.

И, раз уж используешь стример, то, вероятнее всего (подробно не изучал что и как ты там создаёшь), различные взаимодействия по координатам (вход в дом и т.п.) можно оптимизировать через Streamer_GetNearbyItems там, где место взаимодействия помечается созданием NPC/пикапа и прочих вещей, связанных со стримером.

Если в условии для запроса фигурирует PRIMARY KEY или UNIQUE-столбец, то "LIMIT 1" прописывать не нужно. Оптимизатор MySQL и сам достаточно умён, чтоб прекратить поиск данных после первого совпадения.

И над уникальностью имён переменных/функций стоит подумать получше. То, что ты той же "dbHandle" влепил оператор static при объявлении - не спасёт твою библиотеку от предупреждения о существующей переменной "dbHandle", если в моде та будет объявляться выше, чем подключается инклуд.
0

#4
Пользователь офлайн   Saibot 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (01 апреля 2022 - 20:38) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Не понял насчет перехвата mysql_connect?
Остальное исправлю.

Сообщение отредактировал Saibot: 01 апреля 2022 - 20:57

1

#5
Пользователь офлайн   continue 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
1) Есть массив gCamperClass, туда можно добавлять координаты для интерьеров. Лучше убрать const и добавить функцию:

camper_AddInterior(const interior_name[], const Float: x_pos, const Float: y_pos, const Float: z_pos, const Float: angle, const size = sizeof(interior_name));



Чем меньше надо менять внутри самого модуля - тем лучше. Вообще хорошо, когда я не знаю деталии реализации в коде и могу манипулировать данными.

2) Запрос в базу (OnPlayerConnect) идет по нику. Если игрок сменит ник, то поиск отвалится, что вообще то не есть хорошо. Вероятное решение:

camper_Load(const pid)



Где pid - ид аккаунт игрока.

3) 0.0 - вполне валидные координаты :). NaN или бесконечность будет как раз в тему

Float: BUY_CAMPER_POS_X = 0.0,
Float: BUY_CAMPER_POS_Y = 0.0,
Float: BUY_CAMPER_POS_Z = 0.0,
Float: BUY_CAMPER_POS_A = 0.0,



4) Саму таблицу лучше создавать через mysql_query_file, либо прямо в коде через
CREATE TABLE IF NOT EXISTS

0

#6
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSaibot (01 апреля 2022 - 20:57) писал:

Не понял насчет перехвата mysql_connect?
Остальное исправлю.


Ну перехватываешь функцию mysql_connect и в перехвате записываешь в свою переменную ID соединения с БД вместо того, чтоб заставлять прописывать Camper_SetMysqlConnectionHandle
0

#7
Пользователь офлайн   admin1111 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSaibot (01 апреля 2022 - 19:13) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

У меня проблема возникла тут с тем что у меня на сервере есть система бензина и вот я немогу никак сделать так что бы переменная виделась в инклуде и работала верно может подскажешь что
0

#8
Пользователь офлайн   Saibot 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияadmin1111 (05 августа 2022 - 14:06) писал:

У меня проблема возникла тут с тем что у меня на сервере есть система бензина и вот я немогу никак сделать так что бы переменная виделась в инклуде и работала верно может подскажешь что

Как вариант, создай в моде функцию.
stock SetCamperFuel(vehicleid)
{
	veh_info[vehicleid][fuel] = 100.0; /* Это для примера, меняй на свое*/
}



Потом зайди в include, найди строку 1789, 1500, 1653 и на каждой строке добавь функцию
SetCamperFuel(vehicleid);

Сообщение отредактировал Saibot: 05 августа 2022 - 14:17

0

#9
Пользователь офлайн   admin1111 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSaibot (05 августа 2022 - 14:17) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Спасибо помогло)
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика