MyDC.ru _ Служебные скрипты [PtokaX] _ Новые скрипты для птохи - новые вариации на старые темы
Автор: baltica 19.5.2013, 20:51
На сайте Synergetic DC++ Community http://mydc.ru/r/?http://synergetic-hub.org вы можете найти дюжину оригинальных скриптов моей редакции, часть написана мной от начала до конца, часть как основа заимствована мной у известных скриптеров, на что всегда имеются ссылки))). Скрипты изначально написаны для личного пользования, но может, и вам пригодятся http://mydc.ru/r/?http://synergetic-hub.org/scripts
Автор: Saymon21 19.5.2013, 21:16
Обычно приято выкладывать скрипты сюда, на форум. А не куда-то там на какие-то свои сайты... Ну или хотя-бы github, butbucket etc.
Автор: Ksan 19.5.2013, 23:07
baltica, у вас странная манера написания скриптов.. я даже не уверен, все ли они работают и правильно ли.. Если бы вы выложили на этом форуме, то можно было бы поговорить на эту тему, а так...где-то далеко-далеко лежат какие-то скрипты - а нам-то что до них? тут своих хватает...вот когда они станут частью нашего форума, вот тогда и можно принять всерьёз. Так, навскидку, - нет проверки (или проверок) прав на команду, сомнительные регулярки... пример:
Код
local nick = sData:match("!gag%s-(%S-)|")
Я скрипты на рабочесть не проверял, изучил через Нотепад++ только один (newgag.lua), вот на основании этого и.
Кстати, этот скрипт я бы написал так:
Обозначения переменных оставил как есть. Сообщения о разглушке (юзеру и в общий чат) счёл ненужными.
function ChatArrival(tUser, sData) if tProfiles[tUser.iProfile] == 1 and sData:find("!gag") then local nick = sData:match"^%b<>%s+%S+%s+(%S+)|" if not gg[nick] then gg[nick] = true else Core.SendToNick(tUser.sNick, "<"..bot.."> Этот юзер уже заглушен.") end return true elseif tProfiles[tUser.iProfile] == 1 and sData:find("!ungag") then local nick = sData:match"^%b<>%s+%S+%s+(%S+)|" if not gg[nick] then Core.SendToNick(tUser.sNick, "<"..bot.."> Этот юзер и так не заглушен.") else gg[nick] = nil end return true elseif tProfiles[tUser.iProfile] == 0 and gg[tUser.sNick] then return true end end
А вообще, гагать юзеров через эту штатную команду (!gag/!ungag) - позапрошлый век! Писать скрипт под такую команду сейчас - только разве что для тренировки..
Автор: baltica 20.5.2013, 18:56
Цитата(Ksan @ 20.5.2013, 2:07)
Ksan, спасибо за критику и детальный разбор)) Да, манера написания наверно действительно странная - но я не профессионал в программировании, образование у меня совсем другое - я генетик. Но написание прог всегда было слабостью, сначала - много лет назад писал на С, потом С++, php и lua. Скрипты все работают, и без сбоев - проверено все на нескольких хабах уже. А скрипты здесь долгое время не выкладывал потому, что не хотел лезть к профессионалам со своими пятью копейками))
Автор: Ksan 21.5.2013, 5:26
baltica, и да, кстати, в варианте скрипта newgag.lua, который я показал выше (думаю, и в оригинале так же), командой заглушки/разглушки может служить любое другое !слово, а не только !gag или !ungag, так как по коду достаточным условием заглушки является наличие ника в таблице заглушки. Поэтому лучше так и сделать, а в дальнейшем попытаться нарастить мощность скрипта дополнительными фишками-удобствами...в частности, добавить меню, сохранение таблицы в файл, возможность добавить срок заглушки, причину заглушки и т.д. и т.п.. То есть, на базе этого скрипта учиться кодировать на Луа.. Все эти фишки уже давно реализованы в полной мере в других скриптах форума (и вы вполне можете ими пользоваться), но вам, раз желаете самостоятельно научиться писать, советую прислушаться и продолжить наращивать этот скрипт. Вся мощь данного форума к вашим услугам, берите скрипты, изучайте.. Удачи!