Как да създам меню в което да излизат имената на играчите ?

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

Как да създам меню в което да излизат имената на играчите ?

Мнение от gadinkata » 21 Мар 2018, 23:25

Големи Адмираций OciXCrom,евала за всичко което си направил до сега и продължавай да правиш занапред,за да се научин и ние на нещо.
Аз бих те помолих,ако е възможно да хванеш един малък обикновен сма файл(плугин) и всяка една фукнция всяка една променлива да я обясниш
за какво как и защо,примерно като по горе ти написа szUserId[8] променливата е ясна,но тая 8ца неми е ясна,за какво служи,какъв е максимума на цифвите в тая променлива 10-22-32 -33,защо е така,ето такива неща лично на мен ще ми помогнат да се науча,това което мога в момента е нещо минимално и просто,но както ти каза,аз не го разбирам,аз просто пипам тук там,докато не стане нещо,гледам два сродни плъгина и пиша,но това което го пиша,него сващам защо как и за какво се пише така...Ще съм благодарен да пуснеш една тема :)Дори бих бил благодарен на личен урок по скайп разговор :)Зада ми обясниш всичко от до :) най важните неща!Благодаря и още веднъж Адмираций

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

Как да създам меню в което да излизат имената на играчите ?

Мнение от OciXCrom » 22 Мар 2018, 00:22

примерно като по горе ти написа szUserId[8] променливата е ясна,но тая 8ца неми е ясна,за какво служи,какъв е максимума на цифвите в тая променлива 10-22-32 -33,защо е така
Въпросното число означава колко "символа" може да държи променливата. В случая тя трябва да държи userid-то на играча (което може да се види с командата amx_who - числото след SteamID-то). Не бях сигурен колко е максималната възможна дължина на userid и не ми се занимаваше да търся, и затова написах 8. Надали ще е повече от 8 цифри, тъй че не е проблем.

В случая на szName[32] - 32 е максималната дължина на име, което един играч може да има. Реално можеш да пишеш което искаш число, обаче ако сложиш примерно 16, а играчът има 20 символа/букви в ника, само първите 16 ще се покажат/прочетат. Ако пък сложиш повече от 32, няма да има никакъв проблем, обаче е напълно ненужно и създаваш излишна неизползвана мемория, тъй като името никога няма да е по-дълго от 32.

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Как да създам меню в което да излизат имената на играчите ?

Мнение от User12 » 22 Мар 2018, 01:07

Може ли да ми разясниш точно каква е разликата в този код :

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

    menu_item_getinfo(iMenu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
и в този :

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

	menu_item_getinfo(iMenu, iItem, iUnused, szUserId, charsmax(szUserId), szName, charsmax(szName), iUnused)
OciXCrom™ написа: 21 Мар 2018, 23:08 За да ползваш избрания играч в меню handler-а, трябва да подадеш неговото userid при добавяне на предметите в менюто. За да направиш това, преди for цикъла от предишния ми пост, добави нова променлива szUserId[8]. След това, в цикъла запазваш userid-то на играча в новата променлива като string.

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

num_to_str(get_user_userid(iPlayers[i]), szUserId, charsmax(szUserId))
И menu_additem реда го правиш така:

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

menu_additem(iMenu, szName, szUserId)
Handler-ът на менюто ще ти го дам готов, тъй като нямам много време да обяснявам. Опитай се да разбереш какво се случва в този код и ако не разбираш някоя част, питай.

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

public Nastroiki(id, iMenu, iItem)
{
	if(iItem == MENU_EXIT)
	{
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	
	new szName[32], szUserId[8], iUnused
	menu_item_getinfo(iMenu, iItem, iUnused, szUserId, charsmax(szUserId), szName, charsmax(szName), iUnused)
	
	new iPlayer = find_player("k", str_to_num(szUserId))
	
	if(iPlayer)
		CC_SendMessage(id, "^1[^4Server Menu^1] ^1Igrachut ^4%s ^1ima ^4%d ^3tochki", szName, gKillerPoints[iPlayer])
		
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}
Каналът ми в YouTube : Георги Пламенов

Изображение

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

Как да създам меню в което да излизат имената на играчите ?

Мнение от OciXCrom » 22 Мар 2018, 03:36

Няма разлика в този случай. Просто аз ползвам една променлива (iUnused) за третия и последния аргумент, а при теб бяха две отделни (access и callback). Направил съм го с една защото нито една от стойностите на двата параметра не ти е нужна (даже съм сложил име unused, демек неизползвано/ненужно), обаче функцията налага да се подадат в променлива.

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

Как да създам меню в което да излизат имената на играчите ?

Мнение от gadinkata » 22 Мар 2018, 12:26

OciXCrom™ написа: 22 Мар 2018, 00:22
примерно като по горе ти написа szUserId[8] променливата е ясна,но тая 8ца неми е ясна,за какво служи,какъв е максимума на цифвите в тая променлива 10-22-32 -33,защо е така
Въпросното число означава колко "символа" може да държи променливата. В случая тя трябва да държи userid-то на играча (което може да се види с командата amx_who - числото след SteamID-то). Не бях сигурен колко е максималната възможна дължина на userid и не ми се занимаваше да търся, и затова написах 8. Надали ще е повече от 8 цифри, тъй че не е проблем.

В случая на szName[32] - 32 е максималната дължина на име, което един играч може да има. Реално можеш да пишеш което искаш число, обаче ако сложиш примерно 16, а играчът има 20 символа/букви в ника, само първите 16 ще се покажат/прочетат. Ако пък сложиш повече от 32, няма да има никакъв проблем, обаче е напълно ненужно и създаваш излишна неизползвана мемория, тъй като името никога няма да е по-дълго от 32.
За това говоря,стана ми ясно отностно тея неща,ако примерно стеам ид-то ми се състой от 12 цифри,му задаваме szUserId[12]
А ще отговориш ли, szUserId неможе ли да е по друг начин написана или това си е код който си отговаря за ид-то на играч,офф незнам дали ме разбра,може ли да е nnUserId,и те умолявам,направи един урок,с един прост плугин, конект съобщение примерно и всяко едно нещо го обясни подробно,ако нете затруднява,най добре ще е видео урок,защото по бързо става

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

Как да създам меню в което да излизат имената на играчите ?

Мнение от OciXCrom » 22 Мар 2018, 17:16

SteamID не е еднакво с UserID-то.

SteamID: STEAM_0:123456789 (също се нарича и AuthID)
UserID: 3 (или някое друго число)

Ако твоето има 12, а някой друг играч има 13, какво правим? Големината на масива (променливата) трябва да я направиш такава, че да може в нея да се запази всякакъв възможен вариант на SteamID. Няма как да знаеш дали играчите в сървъра ще имат 24, 26, 29 или еди колко си цифри в SteamID-то. В случая на SteamID, максималната възможна дължина е 35, тъй че ще го направиш szSteamID[35], за да има достатъчно място.

Името на променливата не е от никакво значение. Можеш да го направиш и userid[8], USERID[8], id_na_usera[8], asd[8], ASDADASDASDASDSDA[8] и прочие. За самия компилатор и плъгина не е от значение, обаче от значение е за хората, които четат кода, затова е препоръчително да се слагат ясни имена. szUserId - въпросното "sz" означава, че става дума за string (текст), тъй като запазваме userid-то като текст - "3", а не като число - 3. Ако беше число, правилно е да се напише iUserId (i = integer). Прочети тази тема за повече информация относно именуването на променливите - viewtopic.php?f=26&t=1046

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

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

Кой е на линия

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