Просмотр полной версии : [RP] Less Global-Rp v2.2 [NEW EDITION]
Vano_Glad
22.09.2015, 13:53
Delete
Kurbanoff
22.09.2015, 14:59
Скрин )
Vano_Glad
22.09.2015, 16:12
Kurbanoff
Вам скрин чего?
Теперь каждый раз новую тему будете создавать? Можно нажать кнопку ''Редактировать'', и отредактировать старую тему.
Kurbanoff
22.09.2015, 21:01
Хотел бы увидеть скрины вашего сервера , где уникальные системы или красота :good:
Vano_Glad
23.09.2015, 01:38
Osetin
Новую тему? Она единственная
Desulaid
24.09.2015, 19:34
Запрещено выкладывать моды, сделанные на основе RLS. (Shitcode lovers - go hack yourself).
Vano_Glad
25.09.2015, 03:34
Zangetsu
RLS? :sarcastic: Уважаемый, где вы тут увидели RLS?
gangzone.ini
25.09.2015, 08:25
Zangetsu
RLS? :sarcastic: Уважаемый, где вы тут увидели RLS?
Вы свой пост читали или вдумывались в то, что пишите?
Приветствую всех! С вами снова Vano_Glad со своей новой версией мода Less Global-RP v2.2 [NEW EDITION]. Мод будет разрабатываться дальше и улучшаться в лучшую сторону. Скоро о старом и назойливом RLS вы сможете забыть!
Vano_Glad
25.09.2015, 12:58
gangzone.ini
Уважаемый, вы не поняли просто смысла этого сообщения :) Если не знакомы с предыдущими версиями, то лучше просто ничего не пишите
gangzone.ini
25.09.2015, 13:45
gangzone.ini
Уважаемый, вы не поняли просто смысла этого сообщения :) Если не знакомы с предыдущими версиями, то лучше просто ничего не пишите
В первой теме Вы писала о продаже переделке Less Global, а как мы знаем это RLS, так что пoпрошу старшую администрацию удалить тему, т.к основа мода RLS.
Desulaid
25.09.2015, 15:25
"Улучшенный" мод на основе RLS? :lol:
Vano_Glad
25.09.2015, 16:17
gangzone.ini
Уважаемый, включите свои мозги, скачайте мод и протестируйте его. И не несите такую ересь, насчет того, что данный мод - RLS.
Zangetsu
Это не RLS :facepalm:
Daniel_Cortez
25.09.2015, 18:38
Проверил - да, это не RLS. Но при взгляде на код всё равно возникает какое-то ощущение дежавю.
Например, часть макросов и переменных написана на транслите:
#define COLOR_SERYI 0xE6E6E6E6
#define COLOR_OTVET 0x83F9C8AA
#define COLOR_ALMAZ 0x00FFD5AA
#define MOROZ(%0) TogglePlayerControllable(playerid, %0);
new bool: akk[MAX_PLAYERS];
new bool: Dostup[MAX_PLAYERS];
new bool: Popitka[MAX_PLAYERS];
Одни переменные названы с маленькой буквы, другие - с большой. Определитесь уже.
new Menu: bomj[2];
new SelectCharPlace[MAX_PLAYERS];
new Parol[MAX_PLAYERS];
new TimerAkk[MAX_PLAYERS];
new arendascooter[MAX_PLAYERS];
Также в половине макросов не нужно ставить скобки и точку с запятой после функции - так макросы функций не делаются.
Такого даже в RLS не было.
#define com if(Login[playerid] == false) return SCM(playerid, COLOR_GREY, "Необходимо авторизоваться!");
#define flood if(AntiFlood[playerid] > gettime()) return SCM(playerid, COLOR_RED, "Не флуди!"); AntiFlood[playerid] = gettime()+1;
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
Кроме того, часть макросов названа в верхнем регистре, часть - в нижнем. Опять же, отсутствие каких-либо вменяемых стандартов.
И... иногда есть некоторые вещи невозможно объяснить словами:
#define Kickk SetTimerEx("kick", 20, false, "i", playerid);
#define publics%0(%1) forward%0(%1); public%0(%1)
Едем дальше.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[1400];
Это такая неудачная шутка, да?
new scooter;
Как думаете, что это? Переменная, в которую записывается ID какого-то скутера?
stock Pickups()
{
scooter = CreatePickup(19134, 23, 1160.5629,-1771.9706,16.5938);
}
Да нифига подобного - это ID пикапа. Естественно, нельзя узнать об этом, не обыскав весь мод.
format(src,sizeof(src),"`Pass` = '%s'",Player[i][pPass]);
Шаг 1: Зарегистрироваться с паролем "a';DROP TABLE `accounts`;--" (без кавычек).
Шаг 2: ...
Шаг 3: PROFIT.
В общем, назвать это "RLS" нельзя. Скорее, "new.pwn со всеми ужасами кодинга, перенесёнными из RLS на новый мод".
В текущем виде для обучения скриптингу не годится. Я бы упомянул о Правилах раздела (http://pro-pawn.ru/showthread.php?9065), но, по-моему, тут уже нет смысла.
Desulaid
25.09.2015, 18:47
А ведь этот мод хотели продавать (http://pro-pawn.ru/showthread.php?12677-Less-Global-Rp-v2-2-NEW-EDITION) :declare:
Vano_Glad
25.09.2015, 19:24
Daniel_Cortez
Уважаемый Daniel_Cortez, нисколько не сомневаюсь в ваших знаниях по pawn, но давайте по-порядку.
1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать.
3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.
Делаем итог: Я НЕ считаю это "нубо-кодингом". Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных. И в этом нет ничего плохого
gangzone.ini
25.09.2015, 20:16
Daniel_Cortez
Уважаемый Daniel_Cortez, нисколько не сомневаюсь в ваших знаниях по pawn, но давайте по-порядку.
1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать.
3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.
Делаем итог: Я НЕ считаю это "нубо-кодингом". Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных. И в этом нет ничего плохого
На g-i оценят наверное мод, но это не g-i, о каких придирках идёт речь? Все правельно DC написал.
Daniel_Cortez
25.09.2015, 21:35
1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
[сарказм]Правильно, а читаемость кода и простота сопровождения - это так, мелочи...[/сарказм]
2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать
Вы про этот, что ли?
f("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", Pravila[0],Pravila[1],Pravila[2],Pravila[3],Pravila[4],Pravila[5],Pravila[6],Pravila[7],Pravila[8],Pravila[9],Pravila[10],Pravila[11],Pravila[12],Pravila[13],Pravila[14],Pravila[15],Pravila[16],Pravila[17],Pravila[18]);
К вам встречный вопрос: а зачем форматировать этот текст при каждом вызове? Содержимое строк как-то изменяется между показами диалога?
Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать
Достаточно объявить массив string отдельно в каждой ветке case и адекватно рассчитать его размер, исходя из ситуации.
Касаемо диалога с правилами: http://pro-pawn.ru/showthread.php?10012
В вашем случае нужно один раз (именно один раз, а не перед каждым показом диалога - в OnGameModeInit, например) пройтись циклом по массиву строк (от 0-го до предпоследнего элемента) и заменить символы конца строки ('\0') на перенос строки ('\n').
3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.
Как я уже сказал, важна не только работоспособность. Пора бы уже понять это.
В подтверждение приведу цитату Мартина Фаулера (https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%83%D0%BB%D0%B5%D1%80,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD):
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных.
Об этом и была речь.
Делаем итог: Я НЕ считаю это "нубо-кодингом".
И в этом нет ничего плохого
Считайте, как хотите, ваше право. Только не называйте себя после этого скриптером.
И уж тем более, не стоит выкладывать подобные поделия на всеобщее обозрение (ну разве что если вы захотите заработать + в репутацию на g-i - там и без того целая свалка говнокода). Из вашего кода новички ничему хорошему не научатся и только зря потеряют время.
Desulaid
25.09.2015, 21:53
Решил посмотреть "ненубовский" код.
stock Register(i, passkey[])
{
new string[1400];
strmid(Player[i][pPass],passkey, 0, strlen(passkey), 20);
f("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", Pravila[0],Pravila[1],Pravila[2],Pravila[3],Pravila[4],Pravila[5],Pravila[6],Pravila[7],Pravila[8],Pravila[9],Pravila[10],Pravila[11],Pravila[12],Pravila[13],Pravila[14],Pravila[15],Pravila[16],Pravila[17],Pravila[18]);
SPD(i, 2, DSM, "Правила сервера", string, "Далее", "Назад");
}
Яндекс плохого не подскажет
https://pp.vk.me/c629321/v629321894/12e97/5sLsAQTcpBQ.jpg
https://pp.vk.me/c629321/v629321894/12e8e/_Ohi1Ogbw_U.jpg
:sorry:
Vano_Glad
26.09.2015, 03:59
gangzone.ini
Не всё
Daniel_Cortez
Насчёт читаемости кода: Начнём с того, что в первую очередь код должен понимать, как я минимум. Пишу я его в первую очередь для себя, а не для других. Начиналась моя жизнь в pawn с мода RLS. Я привык к нему, к его оформлению, и поэтому использую я именно его. Мне так проще, для меня этот код более читаем, и здесь нет ничего плохого. Другие люди так же просто понимают этот код, поэтому здесь вы не до конца правы.
Насчёт string недопонял вас. Если вы меня в чём-то упрекаете, мол я никчемный в pawn, так наоборот бы помогли сами.
Если сравнивать ВСЕ, подчеркиваю ВСЕ паблик моды (хорошие и плохие), то мой их код с моим и рядом не стоит, если я ошибаюсь, то покажите хотя бы 2-3 мода с кодом в целом, который был бы лучше моего.
Zangetsu
Ну извините! Писал мод на скорую руку, ему ещё и недели нет. И вы снова начинаете придираться к мелочам, чтобы (как я считаю) тупо набить себе посты
Desulaid
26.09.2015, 08:02
Ну нужно же как-то развиваться, да и зачем вам такие директивы? Что вы на них возлагаете? Да и везде практически точка с запятой. Зачем?? Стоит такая в команда adm и ты такой - «wtf? Что это? Зачем? Удалю ка я это гавно и сделаю по своему!» :good2:
#define f( format(string, sizeof(string),
#define GN(%1) Player[%1][pName]
#define Kickk SetTimerEx("kick", 20, false, "i", playerid);
#define publics%0(%1) forward%0(%1); public%0(%1)
#define MOROZ(%0) TogglePlayerControllable(playerid, %0);
#define com if(Login[playerid] == false) return SCM(playerid, COLOR_GREY, "Необходимо авторизоваться!");
#define flood if(AntiFlood[playerid] > gettime()) return SCM(playerid, COLOR_RED, "Не флуди!"); AntiFlood[playerid] = gettime()+1;
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
#define adm if(Player[playerid][pAdmin] > 0 && Dostup[playerid] == false) return SPD(playerid, 11, DSI, "Админ-авторизация", "{FFFFFF}Для авторизации в админ-панель\nвведите свой админ-пароль:", "Далее", "Выход");
Я и сам не прочь что-то перенести на define
// к примеру
#define function%1(%2) \
forward %1(%2); public %1(%2)
#define Format(%1,%2,%3) \
(format(%1,sizeof(%1),%2,%3))
#define SendFormatMessage(%0,%1,%2,%3,%4) \
format(%1,sizeof(%1),%3,%4), SendClientMessage(%0,%2,%1)
#define SendFormatMessageToAll(%0,%1,%2,%3) \
format(%0,sizeof(%0),%2,%3), SendClientMessageToAll(%1,%0)
Просто так писать код проще, ну для меня, да и использование такого ничем вас не затруднит. Но от части это и есть говнокод, но я без этого уже не могу))0)
Vano_Glad
26.09.2015, 08:55
Zangetsu
Если честно, то я не понял смысл вашего сообщения
gangzone.ini
26.09.2015, 13:39
Насчёт читаемости кода: Начнём с того, что в первую очередь код должен понимать, как я минимум. Пишу я его в первую очередь для себя, а не для других.
Зачем тогда выкладывать в общий доступ?! Повторяюсь, на g-i выложили бы, может Вас похвалили бы, но не тут, о каком набивании идёт речь? Это обычная критика, и она не запрещена правилами Pro-Pawn.Ru. Если выкладываете мод, ждите отрицательной критики, как в нашем случае.
Vano_Glad
26.09.2015, 13:59
gangzone.ini
Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы
Desulaid
26.09.2015, 14:33
gangzone.ini
Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы
То есть, ваш код можно считать хорошим? :russian_roulette:
gangzone.ini
26.09.2015, 14:40
gangzone.ini
Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы
Обоснуйте поэалуйста данные высказывание, пожалуйста.
Неаргументированные? - привели 2 человека, Daniel_Cortez, Zangetsu аргументы того, что ваш код - не код.
Тупой ? - в чем он тупой? В том что правду пишут?
Бессмысленный? - В чем же? В том что Вам глаза открывают?
Daniel_Cortez
26.09.2015, 15:07
Другие люди так же просто понимают этот код, поэтому здесь вы не до конца правы.
Вы не учли только одного: здесь не g-i и за переменные на транслите и отсутствие стандартов вас здесь по голове никто не погладит.
Насчёт string недопонял вас.
Возможно, будет понятнее из примера кода.
#include <a_samp>
// строки,
new long_text[4][8] =
{
{"строка1"},
{"строка2"},
{"строка3"},
{"строка4"}
};
public OnGameModeInit()
{
for (new i=0, j; i < sizeof(long_text) - 1; ++i) // от 1 до 3 строки
for (j = 0; j < sizeof(long_text[]); ++j) // перебираем каждый символ в строке
if(long_text[i][j] == '\0') // если это символ конца строки - ...
{
long_text[i][j] = '\n'; // ... заменяем его на символ переноса
break;
}
// после этого строки будут "сцеплены" в одну, остаётся только проверить получившийся результат
print(long_text[0]); // обращение к строке происходит не как к "long_text", а как к "long_text[0]"
}
Если вы меня в чём-то упрекаете, мол я никчемный в pawn, так наоборот бы помогли сами.
Помочь? В плане чего?
Касаемо той строки для диалога - я привёл пример кода выше. Надеюсь, для вас не составит труда разобраться и адаптировать свой случай с диалогом.
По поводу всего остального - проще будет переписать мод с 0, чем пытаться исправить ваш код. Естественно, я этим заниматься не собираюсь.
Многие рекомендации по скриптингу я собрал в одной теме. Здесь и стиль кодинга, и разъяснение некоторых распространённых ошибок.
И вы снова начинаете придираться к мелочам, чтобы (как я считаю) тупо набить себе посты
За себя могу сказать, что если б я хотел набить себе посты, я мог бы просто отредактировать их кол-во через настройки в админ-меню. Тем не менее, у меня в статистике не миллион постов, а всего лишь 600 с лишним, и это очень просто объясняется давностью регистрации и активностью на портале.
По поводу остальных участников форума - обоснуйте.
Vano_Glad
26.09.2015, 16:35
Daniel_Cortez
Если я вас правильно понял, то к примеру в:
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания
Daniel_Cortez
Если я вас правильно понял, то к примеру в:
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания
Потому что, теперь нужно ставить точку с запятой при использовании.
public OnPlayerConnect(playerid)
{
ISCM;
return 1;
}
Vano_Glad
26.09.2015, 18:43
#Vito
И в чём же тогда разница моего варианта и этого?
Daniel_Cortez
29.09.2015, 15:53
Daniel_Cortez
Если я вас правильно понял, то к примеру в:
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания
Во-первых, большими буквами обычно называют константы. Примеры: MAX_PLAYERS, MAX_VEHICLES, MAX_PLAYER_NAME (на самом деле это макросы, но они маскируются именно под константы, а не под функции, а потому и правила задания имён те же, что и у констант).
Во-вторых, если "SCM" - это сокращение от "SendClientMessage", то что означают "ESCM", "ISCM" и "LSCM"? Что означают первые буквы в этих названиях? Только не говорите, что это просто рандомные буквы.
В-третьих, вы делаете макросы непохожими на обычный код на Pawn.
Макросы должны быть похожими на настоящие функции. Например, так:
LSCM();
Но ни в коем случае не вот так:
LSCM
Такой код приведёт читателя в замешательство, если он не знаком с вашими заморочками.
И не стоит забывать о том, что названия должны быть в первую очередь понятными.
Вы когда-нибудь видели, чтобы у функций SA:MP вместо нормальных названий были аббревиатуры? (HTTP в счёт не брать, эта аббревиатура достаточно широко известна, gpci - тоже, куй явно не задумывался над названием, всё равно функция скрытая)
Поэтому в случае с LSCM могу предложить такой вариант:
#define SendUnauthorizedPlayerMsg(); SendClientMessage(playerid, COLOR_GREY, "Игрок не авторизовался!");
Здесь из названия сразу можно понять, что этот макрос отправляет игроку сообщение о том, что он не авторизован.
Vano_Glad
29.09.2015, 18:33
Daniel_Cortez
Нет. Это не рандомные буквы. Я делал для себя небольшие подсказки. Например: ESCM - что-то типо else SCM, LSCM - Login SCM и т.д. Не видел. И в чём же плоха такая уникальность? Лично мне так удобнее работать с ними. Мне уже тогда будет проще скопировать данную функцию и вставить ещё раз, нежели писать её ещё длинее. В этом и смысл был моего сокращения - удобство (Как минимум для меня).
И почему эта тема не удаляется? Судя по правилам раздела, она должна быть уже удалена давно. Или не выкладываете её? Есть моды на этом сайте, у которых код намного хуже, чем у меня (на ваш взгляд). Тем более я уже подготовил новую версию... Опубликуете - Обновления для данного мода будут. Не опубликуете - тут понятно
gangzone.ini
30.09.2015, 11:38
Daniel_Cortez
Нет. Это не рандомные буквы. Я делал для себя небольшие подсказки. Например: ESCM - что-то типо else SCM, LSCM - Login SCM и т.д. Не видел. И в чём же плоха такая уникальность? Лично мне так удобнее работать с ними. Мне уже тогда будет проще скопировать данную функцию и вставить ещё раз, нежели писать её ещё длинее. В этом и смысл был моего сокращения - удобство (Как минимум для меня).
И почему эта тема не удаляется? Судя по правилам раздела, она должна быть уже удалена давно. Или не выкладываете её? Есть моды на этом сайте, у которых код намного хуже, чем у меня (на ваш взгляд). Тем более я уже подготовил новую версию... Опубликуете - Обновления для данного мода будут. Не опубликуете - тут понятно
"И в чем же плоха такая уникальность" - в том что, только Вам понятен данный код.
"Лично мне так удобнее работать с ними" - вот именно, что Вам, а не другим людям.
А что опубликовывать?
Delete
Последний раз редактировалось Vano_Glad; 26.09.2015 в 14:05
Vano_Glad
30.09.2015, 11:54
gangzone.ini
"И в чем же плоха такая уникальность" - в том что, только Вам понятен данный код.
"Лично мне так удобнее работать с ними" - вот именно, что Вам, а не другим людям.
Не знаете - не говорите. Другим людям так же понятен мой код.
А что опубликовывать?
Код:
Delete
Последний раз редактировалось Vano_Glad; 26.09.2015 в 14:05
Вот получу когда ответ, будут ли вообще публиковать мой мод или нет, тогда и оформлю как надо
gangzone.ini
30.09.2015, 17:25
gangzone.ini
Не знаете - не говорите. Другим людям так же понятен мой код.
Вот получу когда ответ, будут ли вообще публиковать мой мод или нет, тогда и оформлю как надо
Тут и будет весеть) А эту тему удалят.
Vano_Glad
30.09.2015, 17:48
gangzone.ini
Мне как бы без разницы
gangzone.ini
Мне как бы без разницы
Больно нужен Ваш "уникальны" мод :)
Vano_Glad
01.10.2015, 03:31
Роуди.
Давайте без сарказма. Я не говорил, что он "уникальный"
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot