-
Система домов и бизнесов
Я хочу создать холодильники с продуктами. Не могу найти с понятными объяснениями создание бизнесов, домов на mysql. Ничего не комментируют и трудно разобраться в каких то местах.
Дайте хороший урок (ссылку) по созданию систем бизнесов.
Либо помогите и расскажите что нужно.
Во первых я хочу создать холодильник , уже создал в БД таблицу где будут хранимые ячейки. С этим всё норм вроде. Я создал что бы при регистрации игрока, на его имя записывался строка с ячейками (ПОД Ячейки имею ввиду продукты) Типа игрок сможет взаимодействовать потом с продуктами которые находяться на его имени, работать с данными через его ник крч говоря. Там ещё создан искремент если что.
Моя задача: после регистрация сразу грузить из токо шо созданой базы всю инфу, сделать загрузку данных из таблицы с холодильниками при загрузке мода. Далее все данные непонимаю особо как пихать в переменнные, ну понимаю их приравнивать и всё. Кароче я буду благодарен если вы поняли суть моего предложения. Дайте шаблон нормальный с объяснением. ЧТо бы всё это работала внезависимости игрок подключен к серверу или нет. Это надо по типу шкафа на Advance.
Там шкаф всегда загружен вне зависимости онлайна владельца
-
-
На русском есть? Мне нужно легкое просто. Не обязательно дом. Смотри:
Мне нужно сделать макрос типа сколько холодильников будет на сервере. Но это зависит от того сколько игроков зарегистрируется это первое
Я делаю в
PHP код:
enum e_EAT_INFO
{
eID, // ид это типа добавил по шаблону регистрации типа ID инскремент как на аккаунте игроков
eName, // это владелец холодильника
eApple, // ячейка яблоки
eMeat // это ячейка мясо
};
new eInfo[e][e_EAT_INFO];
Сама таблица где это содержаться будет eat
PHP код:
new eat_string[30+(MAX_PLAYER_NAME+9)+(12+6)+(10+6)+1];
format(eat_string, sizeof(eat_string), "INSERT INTO `eat` (`owner`, `apple`, `meat`) VALUES ('%s', '%d', '%d')", pInfo[playerid][pName], eInfo[e][eApple], eInfo[e][eMeat]);
mysql_function_query(mysql_connect_ID, eat_string, false, "", "");
Она создается при регистрации игрока на ник регистрируемого игрока. Поставьте меня на правильный путь пожалуйста. А то полная каша в башке.
Сейчас пытаюсь написать систему загрузки мода и кэш всех холодильников подряд. Подскажите как это функция называется это типа
PHP код:
forward UploadEat(playerid);
public UploadEat(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
for(e = 0; e < r; e++)
{
pInfo[playerid][eID] = cache_get_field_content_int(0, "eid", mysql_connect_ID);
cache_get_field_content(0, "owner", eInfo[e][eName], mysql_connect_ID, 24+1);
pInfo[playerid][eApple] = cache_get_field_content_int(0, "apple", mysql_connect_ID);
pInfo[playerid][eMeat] = cache_get_field_content_int(0, "meat", mysql_connect_ID);
}
return 1;
}
Я уже сварюсь, плюс жарище погода даже ночью я ща сварюсь невынесу. помогите.
-
На свежую голову подумал утром. Есть недопонимание. Прочел коды разных создания домов и там типа если делают к примеру привязки сейфа, оружий к дому. То она привязана к дому, а дома контролируются типа сколько их можно создавать. К примеру если на сервере домов 900 поставлено. То соответственно как я понял максимально можно будет купить 900 сейфов для каждого дома. По аналогии то чего я пытаюсь делать. Типа холодильника. Но холодильник в моем моде будет создаваться при регистрации нового аккаунта. Соответственно без дома. И получится зашквар. Поэтому я так понял лучше привязаться к игроку типа MAX_PLAYERS. в enum.
Итак собственно вопрос: мне лучше делать отдельной таблицей все виды овоще, продуктов и т.д. И её подключать при загрузке аккаунта? Или всё в одну таблицу запихать всякие разновидности продуктов в таблицу с аккаунтами?
-
Для чего ты вообще собрался холодильник привязывать к аккаунту игрока? Он что, на горбу его носить будет из одного дома в другой при продаже? Да и всё остальное время.
Холодильник даже по логике нужно привязывать к дому. А уже потом можно, при желании, реализовать, например, систему перевозки вещей из дома в дом, если игрок переезжает (по РП, если РП сервер).
Создаёшь отдельную таблицу со структурой, а-ля:
PHP код:
id | house_id | slot_id | item
Где
id - AUTO_INCREMENT
house_id - ID дома из таблицы домов
slot_id - ID слота для предмета в холодильнике (или же ID предмета, если хочешь, чтоб несколько предметов стакались в 1 слот)
item - сам предмет (или же их количество, если хочешь, чтоб несколько предметов стакались в 1 слот)
Лучше ещё сделать таблицу, где будет записываться название продукта относительно его ID. И уже этот UD использовать в качестве ID предмета в этой таблице
И всё. Данные либо выгружай в отдельный массив, который будет завязан на ID дома, либо прямо в массив дома (не очень хорошо для читаемости), либо обращайся к таблице всякий раз, когда игрок взаимодействует с таблицей и выгружай данные локально.
А то, что хочешь сделать ты - это инвентарь, а не холодильник.
-
Да я уже понял. Но я на сервере создал спавн в виде отеля. Привязал виртуальные миры к ID в игре к игрокам. И в каждом отеле типа холодильник. И это же просто спавн и пришлось сделать как ты сказал ну инвентарь привязанный к игроку. Но работать будет у холодильника типа в отеле. (домов пока что не сделал) И собственно я это сделал в виде отдельной таблицы.
В коде я вижу что много мусорю. Например при регистрации этот "холодильник" создается в отельной таблице, а аккаунт в другой таблице.
В таблице `eat` | eid | owner | eApple | eMeat | по данной структуре делаю. И когда к примеру создается при регистрации игрока строки , вывожу в отдельном паблике типа
PHP код:
forward LoadingPlayerEat(playerid);
public LoadingPlayerEat(playerid) return pInfo[playerid][eID] = cache_insert_id(mysql_connect_ID);
А аккаунты загружаются в другом паблике через cache_inser_id но уже с пометкой pID (ну связанные с акком)
Мой вопрос такой: как можно их в один паблике сделать или такое нельзя?
И второй вопрос: я сделал систему бана, ещё система смертей. (ну для мода) И когда начнается проверка по нику сначала проверка: забанен ли ник? Если нет, то идет к другому паблике где чекает уже список смертных: типа записан ли ник в базе смертных, дальше если нет то идет проверка зареган ли игрок или нет.
В общем 3 паблика проверяются при коннекте. Как можно это более оптимизированее делать (заметил что при первом подключении игрока чутка с меньшей скоростью чем обычной грузиться все эти проверки по БД) Я просто может незнаю других обходов как это всё совместить в один паблик?
Это возможно по другому записывать?
PHP код:
stock CreateNewAccount(playerid, password[])
{
{
GetPlayerName(playerid, pInfo[playerid][eName], MAX_PLAYER_NAME);
new eat_string[30+(MAX_PLAYER_NAME+9)+(12+6)+(10+6)+1];
format(eat_string, sizeof(eat_string), "INSERT INTO `eat` (`owner`, `apple`, `meat`) VALUES ('%s', '%d', '%d')", pInfo[playerid][eName], pInfo[playerid][eApple], pInfo[playerid][eMeat]);
mysql_function_query(mysql_connect_ID, eat_string, true, "LoadingPlayerEat", "i", playerid);
}
new query_string[66+MAX_PLAYER_NAME-4+30+(13+18)+(16+16)+(14+10)+(11+10)+(16+15)+(12+3)+1] = "INSERT INTO `player_acc` (`player_name`, `password`, `google`, `playerIP`,";
format(query_string, sizeof(query_string), "%s `dollar`, `don`, `data_die`, `skin`)", query_string);
format(query_string, sizeof(query_string), "%s VALUES ('%s', '%s', '%s', '%s', '%d', '%d', '%d', '%d')", query_string, pInfo[playerid][pName], password, pInfo[playerid][pGoogle], pInfo[playerid][pIP], pInfo[playerid][pDollar], pInfo[playerid][pDonate], pInfo[playerid][pDie], pInfo[playerid][pSkin]);
mysql_function_query(mysql_connect_ID, query_string, true, "UploadPlayerAccountNumber", "i", playerid);
format(query_string, sizeof(query_string), "Аккаунт %s успешно зарегистрирован. Администрация желает Вам приятной игры!", pInfo[playerid][pName]);
SendClientMessage(playerid, 0xFFFFFF00, query_string);
player_is_authorized{playerid} = 1;
return 1;
}
Если что у меня лесенкой. Это сайт корявит