Тём4ик
Умник
Динамическая система фракций
Хорошо этот мануал научит вас, как легко это сделать динамические системы для вашего сервера. Когда я начал заниматся скриптингом, это была моя мечта сделать все, динамичный, и теперь у меня хватает знаний, чтобы сделать.
Я буду делать это с нуля, с пояснениями к большинству вещей, давайте начнем
Теперь, давайте добавим include MySQL,SSCANF2, и ZCMD
Далее добавим подключения
И в OnGameModeInit, добавьте эти 2 линии, которые будут получать MySQL для подключения:
Теперь добавим ко всем командам ету команду
Объяснения там должны помочь достаточно, чтобы понять, что происходит, если не обратитесь и я объясню еще дальше, чтобы вы поняли.
Теперь мы только что прошли самую сложную часть, создавая группировки, не так уж плохо еу? Давайте создадим загрузки системы:
Поместите это в OnGameModeInit, поэтому он загружается при запуске режима игры:
А теперь функция, которая загружает фракций, будьте осторожны, это может выглядеть очень запутанным:
Вы могли бы бросить этот код на всем пути в нижней, она должна работать безупречно. В очередной раз, я добавил комментарии, чтобы объяснить информацию, нет действительно намного больше, чем это.
Теперь у вас есть команда, чтобы сделать фракцию .. работать, чтобы загрузить функцию .. давайте еще 2 команды, чтобы установить ранг, и фракция имя:
Но опять же, все объяснения размещаются в виде комментариев в коде выше, задать любые вопросы, если вы застряли на нем.
Теперь просто сделать ранга имя сменный:
Существует так много других способов, затем 5 различных команд, чтобы сделать, например, диалогов и т.д., если вы не понимаете эти коды, идти вперед и задать любые вопросы
Часть B: РЕШЕНИЙ таблицы в PHPMYADMIN / MySQL:
Первый открыть PhpMyAdmin, будь то WAMP или фактического хозяина.
Далее перейдите к базе данных вы создали для этого
Теперь создайте новый стол с 8 столбцов
Для столбцов, установить их следующим образом:
Быстрый внимание, что для ID, она не должна быть 5, 2 будет гораздо более уместно, так как вам не придется более 99 фракций, так как это только 10 определены.
Вот и все на уроке, если у вас есть другие вопросы, спросите прочь. В этом уроке я не включил игрока частично или вступления в группировки и прочее, что вам нужно сделать, что сами, если достаточно много людей просят об этом.
__________________
УРОК был взять с оффициального сайта
Хорошо этот мануал научит вас, как легко это сделать динамические системы для вашего сервера. Когда я начал заниматся скриптингом, это была моя мечта сделать все, динамичный, и теперь у меня хватает знаний, чтобы сделать.
Я буду делать это с нуля, с пояснениями к большинству вещей, давайте начнем
PHP:
#define MAX_FACTIONS 10 // Max amount of factions you could create/have
enum faction // Enums, way better then using 10 variables per thing needed for faction system.
{
ID, // Faction ID
Name[32], // Name of the faction
Type, // What kind of faction? Criminal, law, etc
Rank1[32], // Rank Name
Rank2[32], // Rank Name
Rank3[32], // Rank Name
Rank4[32], // Rank Name
Rank5[32] // Rank Name
};
new Factions[MAX_FACTIONS][faction], Total_Factions_Created, facid[MAX_PLAYERS];
// The Factions[Max_factions] is for the enum, the total factions checks how many factions
// are created and the facid is for admin things, which you will find out about later.
PHP:
#include <zcmd>
#include <a_mysql>
#include <sscanf2>
PHP:
#define MYSQLIP "localhost"
#define MYSQLUSER "root"
#define MYSQLDB "test"
#define MYSQLPASSWORD ""
PHP:
mysql_connect(MYSQLIP, MYSQLUSER, MYSQLDB, MYSQLPASSWORD);
mysql_debug(1);
PHP:
CMD:fcreate(playerid, params[])
{
new string[128], query[400], fname[32];
if(sscanf(params, "s[32]", fname)) return SendClientMessage(playerid, -1, "USAGE: /fcreate factionname");
// GETTING ALL THE FACTIONS CREATED, THEN ADDING 1 TO MAKE THE NEW ONE
Total_Factions_Created++;
//=====================================================================
// THIS SETS THE FACTIONS NAME TO WHATEVER YOU JUST NAMED IT, PLUS SETS THE ID FOR THE FACTION
format(Factions[Total_Factions_Created][Name], 64, "%s", fname);
Factions[Total_Factions_Created][ID] = Total_Factions_Created;
//==============================================================================================
// THIS IS JUST TELLING YOU CREATED A FACTION, WITH THE NAME
format(string, sizeof(string), "You have created a faction named: %s(ID:%d).",Factions[Total_Factions_Created][Name], Factions[Total_Factions_Created][ID]);
SendClientMessage(playerid, -1, string);
//================================================================================================
// THIS IS SETTING ALL THE FACTION NAMES, WILL BE USED LATER FOR EDITTING AROUND
format(Factions[Total_Factions_Created][Rank1], 32, "Rank 1 - Lowest");
format(Factions[Total_Factions_Created][Rank2], 32, "Rank 2");
format(Factions[Total_Factions_Created][Rank3], 32, "Rank 3");
format(Factions[Total_Factions_Created][Rank4], 32, "Rank 4");
format(Factions[Total_Factions_Created][Rank5], 32, "Rank 5 - Leader");
//================================================================================
// THIS IS FOR SAVING ALL THE DATA INTO THE MYSQL DATABASE
format(query, sizeof(query), "INSERT INTO `Factions` (ID, Name, Rank1, Rank2, Rank3, Rank4, Rank5) VALUES(%d,'%s','%s','%s','%s','%s','%s')",
Factions[Total_Factions_Created][ID], Factions[Total_Factions_Created][Name],
Factions[Total_Factions_Created][Rank1],Factions[Total_Factions_Created][Rank2],
Factions[Total_Factions_Created][Rank3],Factions[Total_Factions_Created][Rank4],
Factions[Total_Factions_Created][Rank5]);
mysql_query(query);
//=================================================================================
return 1;
}
Теперь мы только что прошли самую сложную часть, создавая группировки, не так уж плохо еу? Давайте создадим загрузки системы:
Поместите это в OnGameModeInit, поэтому он загружается при запуске режима игры:
PHP:
LoadFactions();
PHP:
stock LoadFactions()
{
new query[400];
for(new id; id < MAX_FACTIONS; id++) // Goes through all the slots, looking for the data
{
format(query, sizeof(query), "SELECT * FROM Factions WHERE ID = %d", id); // Selects all the information from the table
mysql_query(query);
mysql_store_result();
if(mysql_num_rows())
if(mysql_fetch_row_format(query,"|"))
{
sscanf(query, "p<|>e<is[64]ds[32]s[32]s[32]s[32]s[32]>",Factions[id]); // SSCANF seperates the data into the variables
Total_Factions_Created++; // Counts the factions created
}
}
printf("> %d factions have been loaded from the database.", Total_Factions_Created); // Prints out the information of how many factions created
return 1;
}
Теперь у вас есть команда, чтобы сделать фракцию .. работать, чтобы загрузить функцию .. давайте еще 2 команды, чтобы установить ранг, и фракция имя:
PHP:
CMD:editfname(playerid, params[])
{
new string[128], query[400], fname[32], fid;
if(sscanf(params, "ds[32]", fid,fname)) return SendClientMessage(playerid, -1, "USAGE: /editfname factionid newfactionname");
// SETS THE NEW NAME
format(Factions[fid][Name], 32, "%s", fname);
//=============================================
// TELLS YOU THAT YOU CHANGED THE NAME OF THE FACTION
format(string, sizeof(string), "You have renamed faction id %d to %s", fid, Factions[fid][Name]);
SendClientMessage(playerid, -1, string);
//======================================================
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Name = '%s' WHERE ID = %d", Factions[fid][Name],fid);
mysql_query(query);
//======================================
return 1;
}
Теперь просто сделать ранга имя сменный:
PHP:
CMD:editrank1(playerid, params[])
{
new string[128], rname[32], query[400], fid;
if(sscanf(params, "ds[32]", fid,rname)) return SendClientMessage(playerid, -1, "USAGE: /editrank1 factionid newrankname");
format(Factions[fid][Rank1], 32, "%s", rname);
format(string, sizeof(string), "You have set faction ids %d rank 1 to %s", fid, Factions[fid][Rank1]);
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Rank1 = '%s' WHERE ID = %d", Factions[fid][Rank1],fid);
mysql_query(query);
//======================================
return 1;
}
CMD:editrank2(playerid, params[])
{
new string[128], rname[32], query[400], fid;
if(sscanf(params, "ds[32]", fid,rname)) return SendClientMessage(playerid, -1, "USAGE: /editrank2 factionid newrankname");
format(Factions[fid][Rank2], 32, "%s", rname);
format(string, sizeof(string), "You have set faction ids %d rank 2 to %s", fid, Factions[fid][Rank2]);
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Rank2 = '%s' WHERE ID = %d", Factions[fid][Rank2],fid);
mysql_query(query);
//======================================
return 1;
}
CMD:editrank3(playerid, params[])
{
new string[128], rname[32], query[400], fid;
if(sscanf(params, "ds[32]", fid,rname)) return SendClientMessage(playerid, -1, "USAGE: /editrank3 factionid newrankname");
format(Factions[fid][Rank3], 32, "%s", rname);
format(string, sizeof(string), "You have set faction ids %d rank 3 to %s", fid, Factions[fid][Rank3]);
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Rank3 = '%s' WHERE ID = %d", Factions[fid][Rank3],fid);
mysql_query(query);
//======================================
return 1;
}
CMD:editrank4(playerid, params[])
{
new string[128], rname[32], query[400], fid;
if(sscanf(params, "ds[32]", fid,rname)) return SendClientMessage(playerid, -1, "USAGE: /editrank4 factionid newrankname");
format(Factions[fid][Rank4], 32, "%s", rname);
format(string, sizeof(string), "You have set faction ids %d rank 4 to %s", fid, Factions[fid][Rank4]);
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Rank4 = '%s' WHERE ID = %d", Factions[fid][Rank4],fid);
mysql_query(query);
//======================================
return 1;
}
CMD:editrank5(playerid, params[])
{
new string[128], rname[32], query[400], fid;
if(sscanf(params, "ds[32]", fid,rname)) return SendClientMessage(playerid, -1, "USAGE: /editrank5 factionid newrankname");
format(Factions[fid][Rank5], 32, "%s", rname);
format(string, sizeof(string), "You have set faction ids %d rank 5 to %s", fid, Factions[fid][Rank5]);
// UPDATES THE INFORMATION ON THE TABLE
format(query, sizeof(query), "UPDATE Factions SET Rank5 = '%s' WHERE ID = %d", Factions[fid][Rank5],fid);
mysql_query(query);
//======================================
return 1;
}
Часть B: РЕШЕНИЙ таблицы в PHPMYADMIN / MySQL:
Первый открыть PhpMyAdmin, будь то WAMP или фактического хозяина.
Далее перейдите к базе данных вы создали для этого
Теперь создайте новый стол с 8 столбцов
Для столбцов, установить их следующим образом:
Быстрый внимание, что для ID, она не должна быть 5, 2 будет гораздо более уместно, так как вам не придется более 99 фракций, так как это только 10 определены.
Вот и все на уроке, если у вас есть другие вопросы, спросите прочь. В этом уроке я не включил игрока частично или вступления в группировки и прочее, что вам нужно сделать, что сами, если достаточно много людей просят об этом.
__________________
УРОК был взять с оффициального сайта
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование:
