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

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

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

Мнение от mi0 » 17 Юни 2020, 06:03

Бъркаш.
Това не са параметри -
g_iWeapon[Weapons[TwoParameturs]
Това е масив, като в скобите [] е стойност, сочеща към адрес, който съдържа това, което ти трябва.
Не мога да разбера, какво имаш предвид под "константа с две скоби".
cs_set_user_bpammo изисква 3 аргумента, а не масив, съответно - не, не може да ги добавиш заедно.

Енумерациите не са нищо сериозно, те просто помагат за "подредбата" на кода. След компилирането, масива изглежда съвсем обикновен.

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

new g_iWeapons[2][34] = // 2 - 2 елемента в първото измерение, 34 - 32 wName + 1 wGuns + 1 wBullet
        {
                119, 101, 97, 112, 111, 110, 95, 109, 52, 97, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 90
                // 119 - w 101 - e 97 - a 112 - p 111 - o 110 - n 95 - _ 109 - m 52 - 4 97 - a 49 - 1
                // "weapon_m4a1"
                // останалите нули запълват празното пространство до последните 2 елемента, за да можем да инициализираме и тях
                // http://www.asciitable.com/
        },
        {
                119, 101, 97, 112, 111, 110, 95, 97, 107, 52, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 90
        }
}
Ето и как се използва по-надолу в кода

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

                        give_item(id, g_iWeapons[i][0])
                        cs_set_user_bpammo(id, g_iWeapons[i][32], g_iWeapons[i][33])
Това е декомпилиран код. Използвах този tool.
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

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

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

Мнение от gadinkata » 17 Юни 2020, 09:00

Да това ми е доста ясно, просто си мислех, че когато има const test [] [] [] { { {1,2,3,3}}} че можеш да присвойиш всичките стойности е най вътрешните стойности в 1,а не да присвояваш, пак всяко 1,2,3,4 по отделно, за това исках някъв прост пример за констатна с три скоби която да ползва enum за да видя как присвоява взима и наистина е лесно за подреждане, благодаря ти

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

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

Мнение от atmax » 17 Юни 2020, 17:53

Тъй като ми хареса идеята за безкрайни патрони на определени оръжия реших да го направя, може би някой ще го използва :Д

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

#include <amxmodx>
#include <cstrike>
#include <fun>

enum _:Weapons
{
	wName[32],
	wGuns,
	wBullet
}

new const g_iWeapons[][Weapons] =
{
	{"weapon_m4a1",  CSW_M4A1, 90},
	{"weapon_ak47",  CSW_AK47, 90}
}

public plugin_init()
{
	register_plugin("[SW]Infinite ammo", "1.0", "aTmAx")
	register_event("CurWeapon", "event_CurWeapon", "be", "1=1")
}

public event_CurWeapon(id)
{
	if(is_user_alive(id))
	{
		new clip, ammo;
		new w = get_user_weapon(id, clip, ammo)
		if(w == CSW_C4 || w == CSW_KNIFE)
		{
			return PLUGIN_CONTINUE;
		}
		else if(w == CSW_HEGRENADE || w == CSW_FLASHBANG || w == CSW_SMOKEGRENADE)
		{
			return PLUGIN_CONTINUE;
		}
		else if(clip == 0)
		{
			new weapon[32]
			get_weaponname(w, weapon, 31)
			for(new i; i < sizeof(g_iWeapons); i++)
			{
				if(weapon[i] == g_iWeapons[i][wName])
				{
					cs_set_user_bpammo(id, g_iWeapons[i][wGuns], g_iWeapons[i][wBullet])
				}
				if(weapon[i] == g_iWeapons[i++][wName])
				{
					cs_set_user_bpammo(id, g_iWeapons[i][wGuns], g_iWeapons[i][wBullet])
				}
			}
		}
	}
	return PLUGIN_CONTINUE;
}
Rest in peace my friend I always will remember you! 🖤👊

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

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

Мнение от JackEyedJones » 17 Юни 2020, 19:13

Така настройваш винаги патроните за зареждане да са 90 или по default на самото оръжие. Инак Connor е написал безкрайните патрони за стрелба. wasted 15 mins of your life. :coffee:

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

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

Мнение от atmax » 17 Юни 2020, 19:45

Знам кой го е написал, аз го дадох за пример + че той го е написал за всички както казах реших да изпълня идеята на gadinkata
Rest in peace my friend I always will remember you! 🖤👊

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

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

Мнение от gadinkata » 29 Юни 2020, 23:18

Някой,ако може да даде малко инфо за read_data,примери за какво се ползват как се ползват,защо в някой плъгина има read_data(1) (3) (5) ,а 2 и 4 ги няма и също така за това message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id) sreenFade за какво и къде се ползва как действа и т.н

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

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

Мнение от OciXCrom » 30 Юни 2020, 01:01

Когато ползваш register_event. Тук има списък с всички евенти и данните които можеш да получиш с read_data - https://wiki.alliedmods.net/Half-Life_1_Game_Events

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

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

Мнение от gadinkata » 18 Юли 2020, 02:09

Дайте ми съвети,дали съм го написал правилно,ако не съм дай те примери,които мога да ползвам.
В ini файла съм добавил примерно gadinkata = STEAM_X:X и gadinkata2 = STEAM_X2:X2

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

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

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "IOCOCVETI"

enum
{
	SECTION_SETTINGS = 1,
	SECTION_RANKS
}

new Trie:g_aRegsName, Trie:g_aRegsSteam

enum _:eSettings
{
	Prefix[32]
}

new g_eSettings[eSettings]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	CC_SetPrefix(g_eSettings[Prefix])
}

public plugin_precache()
{
	g_aRegsName = TrieCreate()
	g_aRegsSteam = TrieCreate()
	
	ReadFile()
}

public plugin_end()
{
	TrieDestroy(g_aRegsName)
	TrieDestroy(g_aRegsSteam)
}

ReadFile()
{
static szFilename[256],iFilePointer
get_configsdir(szFilename, charsmax(szFilename))
add(szFilename, charsmax(szFilename), "/RegNickSteam.ini")
iFilePointer = fopen(szFilename, "rt")
new iLine

if(iFilePointer)
{
static szData[32],szKey[64],szValue[32],iSection

while(!feof(iFilePointer))
{
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)

if (szData[0] == EOS || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/'))
continue

switch(szData[0])
{
case EOS, ';': continue
case '[':
{
	if (szData[strlen(szData) - 1] == ']')
	{
		if (containi(szData, "settings") != -1)
		iSection = SECTION_SETTINGS
		else if (containi(szData, "ranks") != -1)
		iSection = SECTION_RANKS
	}
	else
	continue
}
default:
{
	switch(iSection)
	{
		case SECTION_SETTINGS:
		{
			strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
			trim(szKey)
			trim(szValue)
			
			if (szValue[0] == EOS)
			continue
			
			if (equal(szKey, "PREFIX"))
			copy(g_eSettings[Prefix], charsmax(g_eSettings[Prefix]), szValue)
		}
		case SECTION_RANKS:
		{
			strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
			trim(szKey)
			trim(szValue)
			
			if (szValue[0] == EOS)
			continue
			
			TrieSetCell(g_aRegsName, szKey, 1)
			TrieSetCell(g_aRegsSteam, szValue, 1)
			iLine++
		}
	}
}
}
}

fclose(iFilePointer)
}
}

public client_authorized(id)
{
	new szAuthID[35]
	new szName[32]
	
	get_user_authid(id, szAuthID, charsmax(szAuthID))
	get_user_name(id, szName, charsmax(szName))
    
	if(!TrieKeyExists(g_aRegsName, szName) && TrieKeyExists(g_aRegsSteam, szAuthID))
	{
		server_cmd("kick #%i ^"Your SteamID/Name is Protected!^"", get_user_userid(id))
	}
	else
	{
		return PLUGIN_CONTINUE
	}

	return PLUGIN_HANDLED
}

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

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

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта