Как да създам меню в което да излизат имената на играчите ?
-
User12
Извън линия - Потребител
- Мнения: 321
- Регистриран на: 25 Яну 2018, 22:39
- Местоположение: Сливен
- Се отблагодари: 40 пъти
- Получена благодарност: 17 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Както се вижда от заглавието , как мога да създам меню в което да изписва имената на играчите който са в сървъра ?
Пример :
Меню - Играчи в сървъра
1 - Nick
2 - Nick2
3 - Nick3
4 - Nick4
5 - Nick5 ....
9 - more
0 - Exit
Пример :
Меню - Играчи в сървъра
1 - Nick
2 - Nick2
3 - Nick3
4 - Nick4
5 - Nick5 ....
9 - more
0 - Exit
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Създаваш менюто с menu_create, луупваш всички играчи с get_players ползвайки for-loop, в луупа запазваш името на играча в някяква променлива с get_user_name и добавяш го в менюто с menu_additem. В края ползваш menu_display за да покажеш менюто. Ще е хубаво първо да опиташ и да предоставиш код с който може да се работи.
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Най-накрая! Дочаках момента да започнете да учите хората, вместо да им давате всичко на говото! При програминето е важен подхода!
-
User12
Извън линия - Потребител
- Мнения: 321
- Регистриран на: 25 Яну 2018, 22:39
- Местоположение: Сливен
- Се отблагодари: 40 пъти
- Получена благодарност: 17 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Като начало не мога да разбера как да "луупна всички играчи" изпозлвайки "get_players"
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
new players[32], num
get_players(players, num)
for (new i = 0; i < num; i++)
{
//код за изпълнение
}
Това е for цикъла, както виждаш имаме локалната променлива I , която започва от 0 и с всяко минава през цикъла ще се качва с 1
get_players(players, num)
for (new i = 0; i < num; i++)
{
//код за изпълнение
}
Това е for цикъла, както виждаш имаме локалната променлива I , която започва от 0 и с всяко минава през цикъла ще се качва с 1
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Нали това е целта на този раздел. Наготово се дава в разделите за заявки.deadlylord написа: ↑17 Мар 2018, 23:31 Най-накрая! Дочаках момента да започнете да учите хората, вместо да им давате всичко на говото! При програминето е важен подхода!
-
User12
Извън линия - Потребител
- Мнения: 321
- Регистриран на: 25 Яну 2018, 22:39
- Местоположение: Сливен
- Се отблагодари: 40 пъти
- Получена благодарност: 17 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
До тук го направих така :
Пропускам нещо щом , не ми създава нов ред с играч и ми показва само името с което играя в сървъра . изобщо се чудя дали съм го направил правилно поне до някъде ... може ли още насоки къде ми е грешката
Код за потвърждение: Избери целия код
public Tochki(id)
{
new szName[32]
get_user_name(id, szName, charsmax(szName))
new players[32], num
get_players(players, num)
for (new i = 0; i < num; i++)
{
new menu = menu_create("Statistika na Igrachite", "Nastroiki")
menu_additem(menu, szName, "1", 0)
menu_display(id, menu, 0)
}
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Просто трябва да разбереш какво означават кодовете, а не да ги пишеш на изуст. id е играчът, който е написал командата. Кодът във for-loopa ще се извика толкова пъти, колкото има играчи в сървъра. Ти си направил да взима твоето име, да създаде менюто Х пъти и да добави само твоето име в него. Ползваш въпросния loop за да намериш имената на всички играчи, а не за да създадеш менюто в него. Ще ти го обясня стъпка по стъпка.
1. Създаваш менюто.
2. Запазваш всички играчи в масив.
- Числото след iPlayers означава колко играчи (id-та) може да държи масивът. Ползваме 32 тъй като в сървъра може да има максимум 32 играча наведнъж.
- От тук iPlayers[0] ще е id-то на първия играч, iPlayers[1] на втория, iPlayers[2] на третия и прочие.
- iPnum е броят на играчи, които функцията е намерила.
3. Създаваш проленлива която ще държи името на играчите. Тук отново ползваме 32, тъй като името на един играч не може да надхвърли 32 символа.
4. Създаваш цикъла (loop) ползвайки нова променлива i, която по подразбиране ще има стойност 0.
- i < iNum означава, че кодът в цикъла ще се повтаря докато i е по-малко от iPnum (броя на играчи на линия).
- i++ означава, че i ще се увеличава с +1 при всяко повтаряне на цикъла.
5. В цикъла намираш името на играча с id равно на iPlayers[ i ] и го добавяш в менюто.
6. Извън цикъла показваш менюто на играча, който е ползвал командата.
1. Създаваш менюто.
Код за потвърждение: Избери целия код
new iMenu = menu_create("Zaglavie", "izvikvashta_funkciq")
- Числото след iPlayers означава колко играчи (id-та) може да държи масивът. Ползваме 32 тъй като в сървъра може да има максимум 32 играча наведнъж.
- От тук iPlayers[0] ще е id-то на първия играч, iPlayers[1] на втория, iPlayers[2] на третия и прочие.
- iPnum е броят на играчи, които функцията е намерила.
Код за потвърждение: Избери целия код
new iPlayers[32], iPnum
get_players(iPlayers, iPnum)
Код за потвърждение: Избери целия код
new szName[32]
- i < iNum означава, че кодът в цикъла ще се повтаря докато i е по-малко от iPnum (броя на играчи на линия).
- i++ означава, че i ще се увеличава с +1 при всяко повтаряне на цикъла.
Код за потвърждение: Избери целия код
for(new i = 0; i < iPnum; i++)
Код за потвърждение: Избери целия код
{
get_user_name(iPlayers[i], szName, charsmax(szName))
menu_additem(iMenu, szName)
}
Код за потвърждение: Избери целия код
menu_display(id, iMenu)
-
User12
Извън линия - Потребител
- Мнения: 321
- Регистриран на: 25 Яну 2018, 22:39
- Местоположение: Сливен
- Се отблагодари: 40 пъти
- Получена благодарност: 17 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
Добре , получи се ! А мога ли кода да го направя отстрани освен името на играча и да показва някаква информация за него в случая "Точки"
Тук кода е направен да работи със команда amx_show_points , но не може да показва на всички играчи точките и няма как да взема пример от кода да го направя така както искам .
Тук в настройките опитах да направя при избиране на някой играч да му показва точките но показва само на 1 играч другите пише 0 !
Код за потвърждение: Избери целия код
public Tochki(id)
{
new iMenu = menu_create("Statistika na igrachite", "Nastroiki")
new iPlayers[32], iPnum
get_players(iPlayers, iPnum)
new szName[32]
for(new i = 0; i < iPnum; i++)
{
get_user_name(iPlayers[i], szName, charsmax(szName))
menu_additem(iMenu, szName)
}
menu_display(id, iMenu)
}
Код за потвърждение: Избери целия код
public cmdShowPoints(id, level, cid)
{
if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
new szArg[32], szName[32], iTarget
read_argv(1, szArg, charsmax(szArg))
if(!szArg[0])
{
client_print(id, print_console, "Usage: amx_show_points <name>")
return PLUGIN_HANDLED
}
iTarget = cmd_target(id, szArg, 0)
if(!iTarget) return PLUGIN_HANDLED
get_user_name(iTarget, szName, charsmax(szName))
CC_SendMessage(id, "&x05[&x04GhostShop&x05]&x03 Player &x04%s &x03has &x04%d &x05points!", szName, gKillerPoints[iTarget])
return PLUGIN_HANDLED
}
Код за потвърждение: Избери целия код
public Nastroiki(id, iMenu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new data[6], szName[64], szArg[32], iTarget;
read_argv(1, szArg, charsmax(szArg))
get_user_name(iTarget, szName, charsmax(szName))
iTarget = cmd_target(id, szArg, 0)
new access, callback;
menu_item_getinfo(iMenu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
CC_SendMessage(key, "^1[^4Server Menu^1] ^1Igracha ^4%s ^1ima ^4%d ^3tochki", szName, gKillerPoints[iTarget])
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Как да създам меню в което да излизат имената на играчите ?
За да ползваш избрания играч в меню handler-а, трябва да подадеш неговото userid при добавяне на предметите в менюто. За да направиш това, преди for цикъла от предишния ми пост, добави нова променлива szUserId[8]. След това, в цикъла запазваш userid-то на играча в новата променлива като string.
И menu_additem реда го правиш така:
Handler-ът на менюто ще ти го дам готов, тъй като нямам много време да обяснявам. Опитай се да разбереш какво се случва в този код и ако не разбираш някоя част, питай.
Код за потвърждение: Избери целия код
num_to_str(get_user_userid(iPlayers[i]), szUserId, charsmax(szUserId))
Код за потвърждение: Избери целия код
menu_additem(iMenu, szName, szUserId)
Код за потвърждение: Избери целия код
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
}
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 0 Отговори
- 1465 Преглеждания
-
Последно мнение от SkandaU
-
- 22 Отговори
- 9597 Преглеждания
-
Последно мнение от thoughtz
-
- 3 Отговори
- 1943 Преглеждания
-
Последно мнение от HawKing
-
- 3 Отговори
- 1860 Преглеждания
-
Последно мнение от BeliaL
-
- 2 Отговори
- 1794 Преглеждания
-
Последно мнение от Gmilanov
-
- 4 Отговори
- 1795 Преглеждания
-
Последно мнение от KARASKO
-
- 2 Отговори
- 1189 Преглеждания
-
Последно мнение от cgozzie
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 17 госта