Доброго времени суток, на связи RASSVET. Сегодня поговорим на такую тему, как : архитектура Вашего проекта. Если же Вы пишите свой мод с нуля, или же хотите более красиво и компактно построить свой код, то Вы по адресу. Не знаю почему, но лично мне не нравится работать с дерективами препроцессора, иначе говоря, с хуками.
"Но как же тогда мы будем прятать весь наш код в инклудах?" Спросите Вы, но на самом деле всё очень просто. Давайте я покажу пример:
И теперь в нашем моде, благодаря двум строкам мы имеем функционал на один диалог. Таким способом, мы можем обращаться к любому паблику.
Данный способ научит Вас более бережно и уважительно относится к своему коду. Так же, Вы всегда можете найти именно то, что Вам нужно. Ведь таким образом, Вы имеете возможность в один include помещать целые системы..
Буду рад ответить на Ваши вопросы, задавайте их ниже, с Вами был RASSVET
"Но как же тогда мы будем прятать весь наш код в инклудах?" Спросите Вы, но на самом деле всё очень просто. Давайте я покажу пример:
// наш инклуд
CMD:hello(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Hello", "1. Hello\n2. World", "okay", "");
return true;
}
stock CMD_OnDialogRepsonse(playerid,dialogid, response,listitem)
{
switch(dialogid)
{
if(response)
{
if(dialogid == 1)
{
case 0: SendClientMessage(playerid, -1, "hello");
case 1: SendClientMessage(playerid, -1, "world");
}
}
}
return true;
}
//Сохраняем с расширением .inc, допустим по пути gamemodes/include
//Наш мод
// Нам нужен паблик OnDialogRepsonse, ищем его.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
CMD_OnDialogRepsonse(playerid,dialogid, response,listitem); // Название нашего стока в инклуде
return 1;
}
//Конец мода
#include "../gamemodes/include/test.inc"
CMD:hello(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Hello", "1. Hello\n2. World", "okay", "");
return true;
}
stock CMD_OnDialogRepsonse(playerid,dialogid, response,listitem)
{
switch(dialogid)
{
if(response)
{
if(dialogid == 1)
{
case 0: SendClientMessage(playerid, -1, "hello");
case 1: SendClientMessage(playerid, -1, "world");
}
}
}
return true;
}
//Сохраняем с расширением .inc, допустим по пути gamemodes/include
//Наш мод
// Нам нужен паблик OnDialogRepsonse, ищем его.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
CMD_OnDialogRepsonse(playerid,dialogid, response,listitem); // Название нашего стока в инклуде
return 1;
}
//Конец мода
#include "../gamemodes/include/test.inc"
И теперь в нашем моде, благодаря двум строкам мы имеем функционал на один диалог. Таким способом, мы можем обращаться к любому паблику.
Данный способ научит Вас более бережно и уважительно относится к своему коду. Так же, Вы всегда можете найти именно то, что Вам нужно. Ведь таким образом, Вы имеете возможность в один include помещать целые системы..
Буду рад ответить на Ваши вопросы, задавайте их ниже, с Вами был RASSVET
Последнее редактирование модератором: