Система пикапов mysql pawno

Система пикапов mysql pawno

Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Программы для скриптера

Подборка удобных программ для скриптера

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

SaNek2x2

Изучающий

Доброе время суток.
Хочу поделится своей системой создания пикапов.
Писал сам.
Подобных тем не нашел. Были только FS
Ну так вот начнем:


С пункта 1 по пункт 3 в любое место кода
1.Для начала создадим переменные:

#define TABLE_TELEPORT "teleports" new bool:Creat[MAX_PLAYERS];//для команды new Float:Xt, Float:Yt, Float:Zt, Model, VW, Intor;//позиция пикапа с мирами и интом new Float:eXt, Float:eYt, Float:eZt ,eVW ,eIntor;//позиция телепорта
enum tTeleport < tID,//ид в базе tModel,//модель Float:tX,//Координата пикапа Float:tY,//Координата пикапа Float:tZ,//Координата пикапа tVW,//ид мира пикапа tIntor,//ид интора пикапа Float:txX,//Координата телепорта Float:txY,//Координата телепорта Float:txZ,//Координата телепорта txVW,//ид мира телепорта txIntor,//ид мира телепорта tPickup//используется для создания пикапа >new TeleportInfo[MAX_TELEPORT][tTeleport]; new TOTAL_TELEPORT = 0; #define MAX_TELEPORT 100
forward LoadTeleportCallback(); public LoadTeleportCallback() < new rows, fields;//переменые для MySql cache_get_data(rows, fields);//результат загрузки if(rows >MAX_TELEPORT)return print("Количество телепортов превышает разрешимое.");//проверяем на кол-во пикапов if(rows > 0) < for(new t = 0; t < rows; t++)//цикл всех пикапов из БД < TeleportInfo[t][tID] = cache_get_row_int(t, 0); TeleportInfo[t][tModel] = cache_get_row_int(t, 1); TeleportInfo[t][tX] = cache_get_row_float(t, 2); TeleportInfo[t][tY] = cache_get_row_float(t, 3); TeleportInfo[t][tZ] = cache_get_row_float(t, 4); TeleportInfo[t][tVW] = cache_get_row_int(t, 5); TeleportInfo[t][tIntor] = cache_get_row_int(t, 6); TeleportInfo[t][txX] = cache_get_row_float(t, 7); TeleportInfo[t][txY] = cache_get_row_float(t, 8); TeleportInfo[t][txZ] = cache_get_row_float(t, 9); TeleportInfo[t][txVW] = cache_get_row_int(t, 10); TeleportInfo[t][txIntor] = cache_get_row_int(t, 11); TeleportInfo[t][tPickup] = CreateDynamicPickup(TeleportInfo[t][tModel], 23, TeleportInfo[t][tX], TeleportInfo[t][tY], TeleportInfo[t][tZ], TeleportInfo[t][tVW], TeleportInfo[t][tIntor], -1, 100);//создаем пикап TOTAL_TELEPORT++; >> printf("Загружено пикапов: %d", TOTAL_TELEPORT); return true; >
mysql_function_query(dbHandle, "SELECT * FROM "TABLE_TELEPORT"", true, "LoadTeleportCallback", "", "");//запрос в БД
CMD:pickup(playerid, params[0]) < if(Creat[playerid] == false) < if(sscanf(params,"d",params[0]))return SendClientMessage(playerid, ORANGE, "/pickup [модель]"); Model = params[0]; GetPlayerPos(playerid, Xt, Yt,Zt); Intor = GetPlayerInterior(playerid); VW = GetPlayerVirtualWorld(playerid); Creat[playerid] = true; >else < new query[520]; GetPlayerPos(playerid, eXt, eYt,eZt); eIntor = GetPlayerInterior(playerid); eVW = GetPlayerVirtualWorld(playerid); format(query,sizeof query,"INSERT INTO "TABLE_TELEPORT" (Model, X, Y, Z, VW, Intor, xX, xY, xZ, xVW, xIntor) VALUES (%d, %f, %f, %f, %d, %d, %f, %f, %f, %d, %d)",Model, Xt, Yt,Zt, VW, Intor,eXt, eYt,eZt, eVW, eIntor); mysql_function_query(dbHandle, query, false, "", ""); Creat[playerid] = false; TeleportInfo[TOTAL_TELEPORT][tModel] = Model; TeleportInfo[TOTAL_TELEPORT][tX] = Xt; TeleportInfo[TOTAL_TELEPORT][tY]= Yt; TeleportInfo[TOTAL_TELEPORT][tZ] = Zt; TeleportInfo[TOTAL_TELEPORT][tVW] = VW; TeleportInfo[TOTAL_TELEPORT][tIntor] = Intor; TeleportInfo[TOTAL_TELEPORT][txX] = eXt; TeleportInfo[TOTAL_TELEPORT][txY] = eYt; TeleportInfo[TOTAL_TELEPORT][txZ] = eZt; TeleportInfo[TOTAL_TELEPORT][txVW] = eVW; TeleportInfo[TOTAL_TELEPORT][txIntor] = eIntor; TeleportInfo[TOTAL_TELEPORT][tPickup] = CreateDynamicPickup(TeleportInfo[TOTAL_TELEPORT][tModel], 23, TeleportInfo[TOTAL_TELEPORT][tX], TeleportInfo[TOTAL_TELEPORT][tY], TeleportInfo[TOTAL_TELEPORT][tZ], TeleportInfo[TOTAL_TELEPORT][tVW], TeleportInfo[TOTAL_TELEPORT][tIntor], -1, 100); TOTAL_TELEPORT++; printf("Создан пикап №%d", TOTAL_TELEPORT); >return true; >
CREATE TABLE IF NOT EXISTS `teleports` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Model` int(11) NOT NULL, `X` float NOT NULL, `Y` float NOT NULL, `Z` float NOT NULL, `VW` int(11) NOT NULL, `Intor` int(11) NOT NULL, `xX` float NOT NULL, `xY` float NOT NULL, `xZ` float NOT NULL, `xVW` int(11) NOT NULL, `xIntor` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

О нас

«Pawno Info» — портал о программировании номер один. Начните с нами изучать эти великолепные и бесконечные виртуальные миры. Научитесь создавать функции и скрипты используя наши уроки по программированию на различных языках. Задавайте вопросы которые Вас интересуют и получайте ответы от наших профессионалов. Будьте с нами. Будьте там, где лучшее.

Читайте также:  Чем ты занимаешься пикап

Наши ссылки

Статистика форума

Created by Giness

shape1

shape4

Уважаемый Гость.
Пожалуйста — воздержитесь от любых комментариев на форуме относительно ситуации в мире.
В личных сообщениях, в темах и где бы то не было.
Помните — это закончится в любом случае, а слова, сказанные (или написанные) Вами — не забудутся никогда.
МЫ ЗА МИР.
(Любые сообщения относительно ситуации в мире(не важно с каким смыслом) буду удаляться. А пользователи — блокироваться безвозвратно. )

Источник

Система пикапов mysql pawno

Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Программы для скриптера

Подборка удобных программ для скриптера

Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
Ручное создание новых тем невозможно.

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

iGuarDD

Начинающий

В приступе альтруизма решил в общий доступ выложить
Делал для своего сервера
Можно обойтись и без mysql,без zcmd и прочих сторонних библиотек — но мне с таким набором удобнее.
И да,если где-то есть «быдлокод»,и Вы знаете,как можно написать лучше — пожалуйста,я буду только рад,если Вы меня поправите.
Описывать процесс вшивания в мод не буду,кому надо разберутся,вроде всё что нужно закоментил
Если есть идеи,как можно расширить функционал — пишите
Точно такая же система есть у меня на сервере,тестировал где-то час,багов не нашёл.

Читайте также:  Пикап центр форд раптор

Требования (для запуска без мороки):
MySQL (юзал версию R39-3,но может работать и на более ранних),стример,zcmd (можно перепилить без проблем на другой)

ПЫСЫ я нуб,не нашёл добавления файла,так что лью сразу код

// by iGuarDD #include #include #include #include // Можно обойтись и без последних 3 инклудов.Но с ними мне было удобнее. #define MySQL_HOST "" #define MySQL_USER "" #define MySQL_DB "" #define MySQL_PASS "" #define MAX_CONSOLE_PICKUPS 50 // Максимальное количество пикапов. new dbHandle; new Name[MAX_PLAYERS][24]; // При наличии аналогичной переменной заменить на свою. new dialog[MAX_CONSOLE_PICKUPS * 56]; new buff[56]; // Вывел как локальную дабы хомячки не пищали о занятом стеке. enum cPickups < pickid, Float:TeleX, Float:TeleY, Float:TeleZ, Float:TeleAngle, Float:StartX, Float:StartY, Float:StartZ, StartWorld, StartInterior, TeleWorld, TeleInterior, bool:created, Creator[24], PickName[30] >new TelePickInfo[MAX_CONSOLE_PICKUPS][cPickups]; new createdpickups[MAX_CONSOLE_PICKUPS]; // Используется для показа диалога с созданными пикапами. public OnGameModeInit() < dbHandle = mysql_connect(MySQL_HOST,MySQL_USER,MySQL_DB,MySQL_PASS); mysql_tquery(dbHandle,"SELECT * FROM ConsolePickups","",""); return 1; >public OnGameModeExit() < mysql_close(dbHandle); return 1; >public OnPlayerConnect(playerid) < GetPlayerName(playerid,Name[playerid],24); >public OnPlayerRequestClass(playerid, classid) < SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; >public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) < if newkeys & KEY_NO && GetPVarInt(playerid,"CreateTelePickMode")*then < new Float:start[3]; new query[290]; // Такой размер обусловлен непостоянностью длины Float- значений.На запас)) new Float:p[4]; start[0] = GetPVarFloat(playerid,"CreateTelePickX"); start[1] = GetPVarFloat(playerid,"CreateTelePickY"); start[2] = GetPVarFloat(playerid,"CreateTelePickZ"); GetPlayerPos(playerid,p[0],p[1],p[2]); GetPlayerFacingAngle(playerid,p[3]); for(new i;i != MAX_CONSOLE_PICKUPS;i++) < if TelePickInfo[i][created]*then continue; TelePickInfo[i][created] = true; TelePickInfo[i][TeleX] = p[0]; TelePickInfo[i][TeleY] = p[1]; TelePickInfo[i][TeleZ] = p[2]; TelePickInfo[i][TeleWorld] = GetPlayerVirtualWorld(playerid); TelePickInfo[i][TeleInterior] = GetPlayerInterior(playerid); TelePickInfo[i][StartX] = start[0]; TelePickInfo[i][StartY] = start[1]; TelePickInfo[i][StartZ] = start[2]; TelePickInfo[i][StartWorld] = GetPVarInt(playerid,"CreateTelePickWorld"); TelePickInfo[i][StartInterior] = GetPVarInt(playerid,"CreateTelePickInterior"); TelePickInfo[i][pickid] = CreateDynamicPickup(1318,1,start[0],start[1],start[2],GetPVarInt(playerid,"CreateTelePickWorld"),GetPVarInt(playerid,"CreateTelePickInterior")); strmid(TelePickInfo[i][Creator],Name[playerid],0,strlen(Name[playerid])); GetPVarString(playerid,"CreateTelePickName",TelePickInfo[i][PickName],30); format(query,sizeof query,"INSERT INTO ConsolePickups (ID,StartX,StartY,StartZ,StartWorld,StartInterior,EndX,EndY,EndZ,EndA,EndWorld,EndInterior,Creator,Name) VALUES (%d,%f,%f,%f,%d,%d,%f,%f,%f,%f,%d,%d,'%s','%s')", i,start[0],start[1],start[2],GetPVarInt(playerid,"CreateTelePickWorld"),GetPVarInt(playerid,"CreateTelePickInterior"),p[0],p[1],p[2],p[3],GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),Name[playerid],TelePickInfo[i][PickName]); mysql_tquery(dbHandle,query,"",""); format(query,45,"Пикап с %d ID успешно создан",i); SendClientMessage(playerid,-1,query); DeletePVar(playerid,"CreateTelePickX"); DeletePVar(playerid,"CreateTelePickY"); DeletePVar(playerid,"CreateTelePickZ"); DeletePVar(playerid,"CreateTelePickWorld"); DeletePVar(playerid,"CreateTelePickInterior"); DeletePVar(playerid,"CreateTelePickName"); return DeletePVar(playerid,"CreateTelePickMode"); >return SendClientMessage(playerid,0xFF0000FF,"Достигнут лимит создания."); // Если цикл не нашёл свободную переменную — выдаём ошибку. > return 1; > public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) < for(new i = strlen(inputtext) - 1;i != -1;i--) if inputtext[i] == '%'*then inputtext[i] = '#'; switch(dialogid) < case 11221: < if !response*then return ShowPlayerDialog(playerid,11220,DIALOG_STYLE_LIST,"Пикапы","Пикапы телепорта","Выбор","Назад"); switch(listitem) < case 0: ShowPlayerConsolePickups(playerid); case 1: ShowPlayerDialog(playerid,11223,DIALOG_STYLE_INPUT,"Пикапы","Введите название пикапа","Выбор","Назад"); case 2: ShowPlayerDialog(playerid,11222,DIALOG_STYLE_INPUT,"Пикапы","Введите ID пикапа для удаления","Выбор","Назад"); >> case 11222: < if !response*then return ShowPlayerDialog(playerid,11220,DIALOG_STYLE_LIST,"Пикапы","Пикапы телепорта","Выбор","Назад"); new pickupid = strval(inputtext); if pickupid < 0 || pickupid >= MAX_CONSOLE_PICKUPS || TelePickInfo[pickupid][pickid] == INVALID_PLAYER_ID*then return ShowPlayerDialog(playerid,11202,DIALOG_STYLE_INPUT,"Пикапы","Введите ID пикапа для удаления","Выбор","Назад"),SendClientMessage(playerid,0xFF0000FF,"Пикап не найден"); DestroyDynamicPickup(TelePickInfo[pickupid][pickid]); TelePickInfo[pickupid][created] = false; new query[45]; format(query,sizeof query,"DELETE FROM ConsolePickups WHERE 11223: < if !response*then return ShowPlayerDialog(playerid,11221,DIALOG_STYLE_LIST,"Пикапы","Список\nСоздать\nУдалить","Выбор","Назад"); new len = strlen(inputtext); if !len || len > 30*then return ShowPlayerDialog(playerid,11223,DIALOG_STYLE_INPUT,"Пикапы","Введите название пикапа","Выбор","Назад"),SendClientMessage(playerid,0xFF0000FF,"Диапазон длины названия: 1..30"); SetPVarString(playerid,"CreateTelePickName",inputtext); new Float:p[3]; GetPlayerPos(playerid,p[0],p[1],p[2]); SetPVarFloat(playerid,"CreateTelePickX",p[0]); SetPVarFloat(playerid,"CreateTelePickY",p[1]); SetPVarFloat(playerid,"CreateTelePickZ",p[2]); SetPVarInt(playerid,"CreateTelePickWorld",GetPlayerVirtualWorld(playerid)); SetPVarInt(playerid,"CreateTelePickInterior",GetPlayerInterior(playerid)); SetPVarInt(playerid,"CreateTelePickMode",1); SendClientMessage(playerid,-1,"Встаньте на точку телепорта и нажмите клавишу \"N\""); > case 11224: < if !response*then return ShowPlayerDialog(playerid,11221,DIALOG_STYLE_LIST,"Пикапы","Список\nСоздать\nУдалить","Выбор","Назад"); new pickupid = createdpickups[listitem]; SetPVarInt(playerid,"ControlConsolePick",pickupid); ShowPlayerDialog(playerid,11225,DIALOG_STYLE_LIST,"Пикапы","Телепортироваться\nПереименовать\nУдалить","Выбор","Назад"); > case 11225: < if !response*then return ShowPlayerConsolePickups(playerid),DeletePVar(playerid,"ControlConsolePick"); new pickupid = GetPVarInt(playerid,"ControlConsolePick"); switch(listitem) < case 0: < SetPVarInt(playerid,"PickUpTimer",gettime() + 5); SetPlayerPos(playerid,TelePickInfo[pickupid][StartX],TelePickInfo[pickupid][StartY],TelePickInfo[pickupid][StartZ]); SetPlayerInterior(playerid,TelePickInfo[pickupid][StartInterior]); SetPlayerVirtualWorld(playerid,TelePickInfo[pickupid][StartWorld]); >case 1: return ShowPlayerDialog(playerid,11226,DIALOG_STYLE_INPUT,"Пикапы","Введите новое название для пикапа:","Ввод","Назад"); case 2: < DestroyDynamicPickup(TelePickInfo[pickupid][pickid]); TelePickInfo[pickupid][created] = false; new query[45]; format(query,sizeof query,"DELETE FROM ConsolePickups WHERE >> DeletePVar(playerid,"ControlConsolePick"); > case 11226: < if !response*then return ShowPlayerConsolePickups(playerid),DeletePVar(playerid,"ControlConsolePick"); new len = strlen(inputtext); if !len || len >30*then return ShowPlayerDialog(playerid,11226,DIALOG_STYLE_INPUT,"Пикапы","Введите новое название для пикапа:","Ввод","Назад"),SendClientMessage(playerid,0xFF0000FF,"Диапазон длины названия: 1..30"); new pickupid = GetPVarInt(playerid,"ControlConsolePick"); strmid(TelePickInfo[pickupid][PickName],inputtext,0,len); DeletePVar(playerid,"ControlConsolePick"); ShowPlayerConsolePickups(playerid); > > return 1; > forward ForLoadConsolePickups(tick); public ForLoadConsolePickups(tick) < new rows,fields; cache_get_data(rows,fields); if !rows*then return print("Пикапы для телепорта не найдены в базе данных"); else if rows >MAX_CONSOLE_PICKUPS*then return printf("WARNING: количество пикапов для телепорта в базе превышает лимит (%d)",rows - MAX_CONSOLE_PICKUPS); new id; new Float:pos[3]; new world; new interior; for(new i;i != rows;i++) < pos[0] = cache_get_field_content_int(i,"StartX"); pos[1] = cache_get_field_content_int(i,"StartY"); pos[2] = cache_get_field_content_int(i,"StartZ"); world = cache_get_field_content_int(i,"StartWorld"); interior = cache_get_field_content_int(i,"Startinterior"); TelePickInfo[id][StartX] = pos[0]; TelePickInfo[id][StartY] = pos[1]; TelePickInfo[id][StartZ] = pos[2]; TelePickInfo[id][TeleX] = cache_get_field_content_int(i,"EndX"); TelePickInfo[id][TeleY] = cache_get_field_content_int(i,"EndY"); TelePickInfo[id][TeleZ] = cache_get_field_content_int(i,"EndZ"); TelePickInfo[id][StartWorld] = world; TelePickInfo[id][StartInterior] = interior; TelePickInfo[id][TeleAngle] = cache_get_field_content_int(i,"EndAngle"); TelePickInfo[id][TeleWorld] = cache_get_field_content_int(i,"EndWorld"); TelePickInfo[id][TeleInterior] = cache_get_field_content_int(i,"EndInterior"); TelePickInfo[id][pickid] = CreateDynamicPickup(1318,1,pos[0],pos[1],pos[2],world,interior); cache_get_field_content(i,"Creator",TelePickInfo[id][Creator]); cache_get_field_content(i,"Name",TelePickInfo[id][PickName]); TelePickInfo[id][created] = true; >printf("Загружено пикапов: %d. %d мс.",rows,GetTickCount() - tick); return 1; > public OnPlayerPickUpDynamicPickup(playerid,pickupid) < if GetPVarInt(playerid,"PickUpTimer") >gettime()*then return 1; // Для телепорта к пикапам for(new i;i != MAX_CONSOLE_PICKUPS;i++) // Можно и без цикла,с < if !TelePickInfo[i][created] || pickupid != TelePickInfo[i][pickid]*then continue; SetPlayerVirtualWorld(playerid,TelePickInfo[i][TeleWorld]); SetPlayerInterior(playerid,TelePickInfo[i][TeleInterior]); SetPlayerFacingAngle(playerid,TelePickInfo[i][TeleAngle]); SetPlayerPos(playerid,TelePickInfo[i][TeleX],TelePickInfo[i][TeleY],TelePickInfo[i][TeleZ]); >return 1; > ShowPlayerConsolePickups(playerid) < dialog[0] = EOS; buff[0] = EOS; // Чистим массив. new countfind; for(new i;i != MAX_CONSOLE_PICKUPS;i++) < createdpickups[i] = 0; if !TelePickInfo[i][created]*then continue; format(buff,sizeof buff,"%s\t%s\n",TelePickInfo[i][PickName],TelePickInfo[i][Creator]); strcat(dialog,buff); createdpickups[i] = countfind; countfind++; >if !countfind*then return ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Пикапы","Пикапы не найдены","Ясно",""); ShowPlayerDialog(playerid,11224,DIALOG_STYLE_TABLIST,"Пикапы",dialog,"Выбор","Назад"); dialog[0] = EOS; buff[0] = EOS; // Чистим массив. return 1; > CMD:pickmenu(playerid) < if IsPlayerAdmin(playerid)*then ShowPlayerDialog(playerid,11221,DIALOG_STYLE_LIST,"Пикапы","Список\nСоздать\nУдалить","Выбор","Назад"); return 1; >

Источник

Оцените статью
Adblock
detector