Начинаещи въпроси свързани с направата на плъгини

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от gadinkata » 24 Мар 2018, 20:05

Здравейте,
В тази тема искам да ми бъде обяснен,всеки един мой въпрос по най простия начин.
Примерно plugin_init() за какво служи,какво може да се регистрира в него и т.н
Примерно може да се регистрарира плугина register_plugin() той има три стойности автор версия и име.
Не искам да ми се помага на 100% в писането на плугин.
Да започнем с плугина който съм започнал,но немога да го довърша,от вас се иска да ми кажете само коя фукнция да извикам или променлива.

Ето го и него

Код за потвърждение: Избери целия код

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <cromchat>

#define PLUGIN "Test Plugin"
#define VERSION "1.0"
#define AUTHOR "Joco"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	

}

public client_connect(id)
{
	
	new szName[32],szIp[12]
	get_user_ip(0, szIp, charsmax(szIp))
	get_user_name(id, szName, charsmax(szName))
	CC_SendMessage(0, "&x03%s &x01vliza v &x04survura s &x03%s", szName, szIp)
}

public client_disconnected(id)
{	

	new szName[32],szIp[12]
	get_user_ip(0, szIp, charsmax(szIp))
	get_user_name(id, szName, charsmax(szName))
	CC_SendMessage(0, "&x03%s &x01izliza ot  &x04survura s &x03%s", szName, szIp)
	
}

функцията client_connect до момента бачка,вкарвам бот и с цветно ми пише име-то на бота и ип-то му,но искам да сложа и звук за влизане!
също така искам изписва и цветно,когато някой излезе,функцията client_disconnected по тоя начин както съм я написал не ми излиза нищо.
Кажете без да ми пишете целия плугин,какво трябва първо трябва да направя после второ и на края трето,ако има такова, трябва ли цикъл и т.н. Ако решите да напишете нещо,моля да бъде обяснено дали е функция дали е стринг кви параметри има и т.н Примерно може да ми е нужно if(!is_user_bot(id)) до колкоро разбирам проверява дали играча е бот или реален играч :)

Благодаря,отначало може и да не се разберем какво точно искам,но леко полеко ще изгладим нещата
И ще помоля,хора които имат малка или никаква представа от писане на амхмодх,да не коментират,неща които незнаят
Последно промяна от gadinkata на 24 Мар 2018, 21:04, променено общо 1 път.

Аватар
wrath
Извън линия
Потребител
Потребител
Мнения: 167
Регистриран на: 21 Яну 2018, 10:30
Местоположение: /changerace
Обратна връзка:

Аз Питам,Вие отговаряте!

Мнение от wrath » 24 Мар 2018, 20:23

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от OciXCrom на 24 Мар 2018, 20:27, променено общо 1 път.
Причина: Мислиш, ама не мислиш. Има си бутон за докладване, ползвай го!
I am not big on sermons ,broken bones teach better lessons. Изображение Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Аз Питам,Вие отговаряте!

Мнение от OciXCrom » 24 Мар 2018, 20:27

За да разбереш какво прави дадена функция, кога се извиква, какви стойности приема и прочие, най-добре е да я намериш в API-то - http://amxx-bg.info/forum/api/

Конкретно за plugin_init - ясно е написано, че се извиква при стартиране на сървъра и в него най-често се регистрира самия плъгин, команди, евенти и прочие.
За да сложиш някакъв звук при влизане, най-добре е да ползваш функцията client_cmd. Първо трябва да precache-неш звука обаче, в противен случай хората няма да могат да го изтеглят от сървъра.

Код за потвърждение: Избери целия код

// Задаваме звука в #define за да не се налага ръчно да го пишем всеки път.
#define ZVUK_PRI_VLIZANE "misc/connect.wav"

public plugin_precache()
{
	// Precache-ваме звука.
	precache_sound(ZVUK_PRI_VLIZANE)
}
Когато искаш да го пуснеш, ползваш следния код:

Код за потвърждение: Избери целия код

client_cmd(0, "spk ^"%s^"", ZVUK_PRI_VLIZANE)
Горната функция ще изпълни командата "spk <звука>" в конзолата на всички играчи. Сложи я при съобщението при влизане.
При излизане не ти изписва нищо, тъй като вероятно ползваш АМХХ 1.8.2, а функцията client_disconnected е нова в АМХХ 1.8.3, съответно при теб тя няма да се извика. За по-стари версии, трябва да ползваш client_disconnect.

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от gadinkata » 25 Мар 2018, 00:47

Кажете сега плугина става ли за удобрение,пробвах го и на 1.8.2 и на 1.8.3 и на двата работи без грешки в конзолата за сега.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <cromchat>

#define PLUGIN "Connect_NameIp"
#define VERSION "1.0"
#define AUTHOR "Joco"

#define ZVUK_ZA_VHOD "misc/blip1.wav"
#define ZVUK_ZA_IZHOD "misc/blip2.wav"

#if AMXX_VERSION_NUM < 183
    #include <dhudmessage>
#endif

new g_iObject

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_iObject = CreateHudSyncObj()
	set_task(1.0, "client_putinserver", _, _, _, "c")
	set_task(1.0, "client_disconnect", _, _, _, "c")
}


public plugin_precache()
{
	// Precache-ваме звука.
	precache_sound(ZVUK_ZA_VHOD)
	precache_sound(ZVUK_ZA_IZHOD)
}


public client_putinserver(id)
{
	
	new szName[32],szIp[12]
	
	get_user_ip(0, szIp, charsmax(szIp))
	
	get_user_name(id, szName, charsmax(szName))
	
	client_cmd(0, "spk ^"%s^"", ZVUK_ZA_VHOD)
	
	set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 0.1, 3.0, 0.1, 0.1, -1)
	
	ShowSyncHudMsg(0, g_iObject, "Player Connect %s %s ", szName, szIp)
	
	CC_SendMessage(0, "&x03Player Connect &x04[&x03%s&x04] &x04[&x03%s&x04]", szName, szIp)
}

public client_disconnect(id)
{	
	new szName[32],szIp[12]
	
	get_user_ip(0, szIp, charsmax(szIp))
	
	get_user_name(id, szName, charsmax(szName))
	
	client_cmd(0, "spk ^"%s^"", ZVUK_ZA_IZHOD)
	
	set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 0.1, 3.0, 0.1, 0.1, -1)
	
	ShowSyncHudMsg(0, g_iObject, "Player Disconnect %s %s ", szName,szIp)
	
	CC_SendMessage(0, "&x03Player Disconnect &x04[&x03%s&x04] &x04[&x03%s&x04]", szName, szIp)
	
	
}
Незнам само библиотеките дали са ми нужни amxmisc,cstrike....

Единственото нещо което забелязах,не е проблем,но след като ми зареди докато избирам от кой отбор да влезна се чува звука за влизане и виждам худ съобщението съмняваме,че е от това:

Код за потвърждение: Избери целия код

set_task(1.0, "client_putinserver", _, _, _, "c")

Код за потвърждение: Избери целия код

	get_user_ip(0, szIp, charsmax(szIp))
	
	get_user_name(id, szName, charsmax(szName))
на user ip трябва ли да е id,незнам защо при писането съм го писал така на едното с нула на другото id
защото пробвах да сложа flag b,но като влезнех звука и худ съобщението се чуваха постоянно
Също така дайте предложение как да си направя проверка всичко това да се вижда само от админ с определен флаг "for" цикъл пробвай,но май нещо неможах да се справя

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от mi0 » 25 Мар 2018, 10:15

Разбира се, че трябва да е с id, иначе как плъгина ще разбере, на кого ип-то трябва да вземе?

Как така "пробвах да сложа flag b"? Искаш, само Админите да виждат ип или само Админите да виждат съобщението?
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
Fr0sTt
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 16 Фев 2018, 19:11

Начинаещи въпроси свързани с направата на плъгини

Мнение от Fr0sTt » 25 Мар 2018, 13:15

Защо си сложил таскове на putinserver и disconnect като те се изпълняват когато играч влиза и излиза, а не на всяка секунда.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от OciXCrom » 25 Мар 2018, 16:24

Тези set_task функции, които си задал в plugin_init не правят абсолютно нищо. Направил си ги да се извикат 1 секунда след началото на плъгина/мапа, и то без никакво id в тях, тъй като plugin_init е глобален евент. Ако искаш функцията да се изпълни няколко секунди след като играчът е влезнал, трябва да сложиш таска в самия client_putinserver или client_connect евент:

Код за потвърждение: Избери целия код

public client_putinserver(id)
{
	set_task(1.0, "nqkakva_funkciq", id)
}

Код за потвърждение: Избери целия код

public nqkakva_funkciq(id)
{
	nqkakuv_kod(id)
}

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от gadinkata » 25 Мар 2018, 17:15

Код за потвърждение: Избери целия код

public client_putinserver(id)
{
	set_task((1.0, "player_vhod", _, _, _, "id")

	
}

public player_vhod(id)
{
	new szName[32],szIp[12]
	
	get_user_ip(id, szIp, charsmax(szIp))
	
	get_user_name(id, szName, charsmax(szName))
	
	client_cmd(0, "spk ^"%s^"", ZVUK_ZA_VHOD)
	
	set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 0.1, 3.0, 0.1, 0.1, -1)
	
	ShowSyncHudMsg(0, g_iObject, "Player Connect %s %s ", szName, szIp)
	
	CC_SendMessage(0, "&x03Player Connect &x04[&x03%s&x04] &x04[&x03%s&x04]", szName, szIp) 
}

public client_disconnect(id)
{
	set_task((1.0, "player_izhod", _, _, _, "id")
	
}

public player_izhod(id)
{
	new szName[32],szIp[12]
	
	get_user_ip(0, szIp, charsmax(szIp))
	
	get_user_name(0, szName, charsmax(szName))
	
	client_cmd(0, "spk ^"%s^"", ZVUK_ZA_IZHOD)
	
	set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 0.1, 3.0, 0.1, 0.1, -1)
	
	ShowSyncHudMsg(0, g_iObject, "Player Disconnect %s %s ", szName,szIp)
	
	CC_SendMessage(0, "&x03Player Disconnect &x04[&x03%s&x04] &x04[&x03%s&x04]", szName, szIp) 
}

пробвах по различни начини,но да изкарам съобщението през public player_vhod никакъв шанс

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от OciXCrom » 25 Мар 2018, 17:18

1 секунда не е достатъчна - играчът не може да види чата толкова бързо. Сложи поне 5. При излизане няма нужда да слагаш забавяне, тъй като целта там е останалите играчи да видят съобщението (понеже няма как този който излезне да види чата, естествено).

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Начинаещи въпроси свързани с направата на плъгини

Мнение от gadinkata » 25 Мар 2018, 17:32

Така ставали кода както съм го написа,защото,го пробвах и не изкарва съобщение,влизам в сървъра вкарвам 2 бота и нищо нито звук нито худ нито сай текст,това

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 2 госта