Начинаещи въпроси свързани с направата на плъгини
Начинаещи въпроси свързани с направата на плъгини
Не става, защото си сложил две скоби - set_task((
Трябвa да е така set_task(5.0, "player_vhod", id)
Трябвa да е така set_task(5.0, "player_vhod", id)
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
То няма и да се компилира със скобите, предполагам я е махнал по-късно. Проблемът е, че "id" си го сложил на мястото където се пишат флаговете. Просто обърни внимание какво съм написал и прочети описанието на функцията. В горното мнение е правилно написано.
-
gadinkata
Извън линия - Потребител
- Мнения: 259
- Регистриран на: 21 Мар 2018, 12:33
- Местоположение: Враца
- Се отблагодари: 25 пъти
- Получена благодарност: 7 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
В момента какво му казвам да изпълни сървъра плъгина:
Попринцип стана и съм доволен,кажи речи разбрах горе долу как стават тея неща,сега искам да ми кажете for цикъл проверка дали определен и грач е админ и ако е админ ,"да стане еди какво си",тоест проверката + цикъла и ми обяснете подробно как се извиква какво извиква и т.н и цикъла той, ще помоля пак да ми го обясни тук,макар,че 3 пъти вечего прави,за което да ме извини OciXCrom,проверка + фор цикъл дали играч е админ и ако е админ да се изпълнят "следните неща",следните неща аз ще си ги пиша
Код за потвърждение: Избери целия код
public client_putinserver(id)
{
set_task(5.0, "player_vhod", id)
}
public player_vhod(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)
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
С for цикъл можеш да направиш даден код да се извика няколко пъти наведнъж. Примерно, ако искаш да изпратиш чат съобщение 3 пъти едно след друго, вместо да пишеш това:
Можеш да напишеш това:
Горният код ще провери дали играчът има флага "d". Символът & в случая означава "съдържа" и проверява дали флаговете на играча съдържат флага ADMIN_BAN (d).
За да изпратиш съобщението само до админите с този флаг, нужно е първо да запазиш всички играчи в един масив ползвайки get_players.
Слагаме 32 като големина на масива, тъй като максималният брой на слотове в CS 1.6 сървър е 32.
В масива, iPlayers[0] ще е id-то на първия играч, iPlayers[1] на втория, iPlayers[2] на третия и тн.
След това ползваме for цикъл за да проверим всеки един играч в масива отделно.
Код за потвърждение: Избери целия код
CC_SendMessage(id, "chat suobshtenie")
CC_SendMessage(id, "chat suobshtenie")
CC_SendMessage(id, "chat suobshtenie")
Код за потвърждение: Избери целия код
for(new i = 0; i < 2; i++)
CC_SendMessage(id, "chat suobshtenie")
Функцията for съдържа 3 аргументи:
[list=1][*]Начало - от кое число ще започне завъртянето. В горния пример сме написали new i = 0, демек сме създали променлива i със стойност 0, тъй че началото ще е числото 0. Може да се напише и само new i, тъй като променливите по подразбиране имат стойност 0.
[*]Условие - до кога ще трае завъртянето на цикъла, тоест до кога ще се изпълнява кода в него. В случая сме написали i < 2, което ще каже, че кодът ще се изпълнява докато числото i е по-малко от 2.
[*]Действие - какво се случва при всяко завъртяне на цикъла. В случая сме написали i++, което ще увеличава числото i с +1 при всяко завъртяне, за по този начин да може да достигне числото 2 което сме задали в условието и съответно цикълът да спре.[/list]
За да провериш дали даден играч е админ, ползваш функцията [api=amxmodx]get_user_flags[/api], тоест проверяваш дали има даден флаг ползвайки константите от тази тема - https://www.amxx-bg.info/forum/viewtopic.php?f=55&t=142
[code]if(get_user_flags(id) & ADMIN_BAN)
За да изпратиш съобщението само до админите с този флаг, нужно е първо да запазиш всички играчи в един масив ползвайки get_players.
Код за потвърждение: Избери целия код
new iPlayers[32], iPnum
get_players(iPlayers, iPnum)
В масива, iPlayers[0] ще е id-то на първия играч, iPlayers[1] на втория, iPlayers[2] на третия и тн.
След това ползваме for цикъл за да проверим всеки един играч в масива отделно.
Код за потвърждение: Избери целия код
// Тук ще е нужно да създадем още една променлива в самия цикъл - iPlayer, която ще е id-то на играча в цикъла.
for(new i, iPlayer; i < iPnum; i++)
{
// Слагаме id-то на играча в променливата iPlayer.
iPlayer = iPlayers[i]
// Проверяваме дали играчът има флага и ако има, изпълняваме кода.
if(get_user_flags(iPlayer) & ADMIN_BAN)
{
CC_SendMessage(iPlayer, "chat suobshtenie")
}
}
-
gadinkata
Извън линия - Потребител
- Мнения: 259
- Регистриран на: 21 Мар 2018, 12:33
- Местоположение: Враца
- Се отблагодари: 25 пъти
- Получена благодарност: 7 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
Благодаря,ще работя върху това което си ми дал,ще пробвам експериментирам,ако имам проблеми или затруднения ще пиша
Добавено преди 4 часа 3 минути 39 секунди:
хахах ако знам и аз какви ги върша,но бачкат незнам дали точно така е правилния начин да го напиша,плугина но нали се уча в момента,експериментирам
Добавено преди 4 часа 3 минути 39 секунди:
Код за потвърждение: Избери целия код
public client_putinserver(id)
{
new iPlayers[32], iPnum
get_players(iPlayers, iPnum)
for(new i, iPlayer; i < iPnum; i++)
{
iPlayer = iPlayers[i]
if(get_user_flags(iPlayer) & ADMIN_BAN)
{
set_user_rendering(iPlayer, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
set_user_noclip(iPlayer, 1)
set_user_footsteps(iPlayer, 1)
set_user_armor(iPlayer, 200)
give_item(iPlayer, "weapon_ak47")
}
}
}
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
Какъв е смисъла да използваш for цикъла, като функциите за putinserver, connect, disconnect, spawn и тн имат в себе си (id), тоест можеш директно да го използваш.
Цикленето на хората се използва да вкараш хората в меню или конзолата да ти покаже хората или пък ако искаш да направиш на хората нещо при край / начало на рунд или друга ситуация.
Цикленето на хората се използва да вкараш хората в меню или конзолата да ти покаже хората или пък ако искаш да направиш на хората нещо при край / начало на рунд или друга ситуация.
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
С това което си направил, всички играчи ще получават glow, noclip, броня и прочие когато ЕДИН играч влезне в сървъра. Тоест при всяко влизане на който да е играч, всички играчи ще получат екстрите. Ако искаш само играчът който е влезнал да ги получи, не ти трябва цикъл - даваш ги директно на id.
-
gadinkata
Извън линия - Потребител
- Мнения: 259
- Регистриран на: 21 Мар 2018, 12:33
- Местоположение: Враца
- Се отблагодари: 25 пъти
- Получена благодарност: 7 пъти
- Обратна връзка:
Начинаещи въпроси свързани с направата на плъгини
Дай ми примери,за да видя как стават нещата,до колкото разбирам трябва да е така само за админ с определен флаг
както каза ти,в горния код,когато игач влезе аз получавах ак47 скороста и др,неща,но когато сменя оръжието скороста изчезваше,оставаше само
да съм невидим и тихите стъпки,Дай ми само правилни примери,за проверка дали играч е админ и ако е админ,да получи нужните неща,примерно скорост тихи стъпки кръв и амур,трябва ли да се направи проверка,кога админ е жив да му ги даде,по тоя начин дали на всеки нов рунд ще ги получи,защото ако админ умре,може на следващия рунд да не ги получи,ще трябва да се реконектне зада е ги има отново Интересувам се от правилния начин,а не както аз съм ги писал как ми падне....
Добавено преди 23 минути 39 секунди:
така както съм ви го дал,тихите стъпки работят за админ с тоя флаг,другите играчи нямат тихи стъпки,но ак47 неми го дава,добавих и amour,но и него неми го дава
Добавено преди 3 минути 38 секунди:
Дали не трябва да го направя по тоя начин,за всяко едно нещо по отделно? това е примера рот fun библиотеката които си дал за макс скорост
Код за потвърждение: Избери целия код
if(get_user_flags(id) & ADMIN_BAN)
{
set_user_footsteps(id, 1)
give_item(id, "weapon_ak47")
}
да съм невидим и тихите стъпки,Дай ми само правилни примери,за проверка дали играч е админ и ако е админ,да получи нужните неща,примерно скорост тихи стъпки кръв и амур,трябва ли да се направи проверка,кога админ е жив да му ги даде,по тоя начин дали на всеки нов рунд ще ги получи,защото ако админ умре,може на следващия рунд да не ги получи,ще трябва да се реконектне зада е ги има отново Интересувам се от правилния начин,а не както аз съм ги писал как ми падне....
Добавено преди 23 минути 39 секунди:
така както съм ви го дал,тихите стъпки работят за админ с тоя флаг,другите играчи нямат тихи стъпки,но ак47 неми го дава,добавих и amour,но и него неми го дава
Добавено преди 3 минути 38 секунди:
Код за потвърждение: Избери целия код
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "eventCurrentWeapon", "be", "1=1")
}
public eventCurrentWeapon(id)
{
if(get_user_flags(id) & ADMIN_IMMUNITY)
{
set_user_maxspeed(id, 350.0)
}
}
}
Начинаещи въпроси свързани с направата на плъгини
Май така би било по добре
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
#define ADMIN_FLAG ADMIN_KICK
#define MAXSPEED 350.0
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "Player_Spawn", true)
}
public Player_Spawn(id)
{
if(get_user_flags(id) & ADMIN_FLAG && is_user_alive(id))
{
new CsTeams:iTeam = get_user_team(id)
if(iTeam == CS_TEAM_CT)
{
give_item(id, "weapon_m4a1")
}
if(iTeam == CS_TEAM_T)
{
give_item(id, "weapon_ak47")
}
set_user_maxspeed(id, MAXSPEED)
}
}
Начинаещи въпроси свързани с направата на плъгини
Проверката за админ ти е правилна - get_user_flags, както си я задал. Относно кода за curweapon както си го направил, скоростта ще бъде еднаква на всяко оръжие което смениш - нож, пистолет, калашник и т.н. А за даване на ak47 трябва да стане така -
Относно това кога да получaват екстрите, можеш да ги добавиш при спаун, и ако искаш да ги дава, ако играчът е жив правиш проверка с is_user_alive(id)
Код за потвърждение: Избери целия код
give_item("ak47")
cs_set_bpammo(id, CSW_AK47, 90)
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 1 Отговори
- 1317 Преглеждания
-
Последно мнение от sf4n
-
- 0 Отговори
- 991 Преглеждания
-
Последно мнение от drakonuid5
-
- 3 Отговори
- 1988 Преглеждания
-
Последно мнение от npax
-
- 9 Отговори
- 568 Преглеждания
-
Последно мнение от zolfeca
-
- 2 Отговори
- 1193 Преглеждания
-
Последно мнение от thoughtz
-
- 4 Отговори
- 1892 Преглеждания
-
Последно мнение от atmax
-
- 0 Отговори
- 1598 Преглеждания
-
Последно мнение от Just
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 8 госта