Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
PRoSToTeM@ » 14 авг 2011, 10:56
- Код: Выделить всё
stock UTIL_SayText(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity, pSender, const szMessage[], const szArg1[] = "", const szArg2[] = "")
{
static msgSayText;
if (!msgSayText)
msgSayText = get_user_msgid("SayText");
message_begin(iDest, msgSayText, vecOrigin, pEntity);
write_byte(pSender);
write_string(szMessage);
if (szArg1[0])
{
write_string(szArg1);
if (szArg2[0])
write_string(szArg2);
}
message_end();
}
- Код: Выделить всё
stock UTIL_TeamInfo(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity, pPlayer, const szTeamName[])
{
static msgTeamInfo;
if (!msgTeamInfo)
msgTeamInfo = get_user_msgid("TeamInfo");
message_begin(iDest, msgTeamInfo, vecOrigin, pEntity);
write_byte(pPlayer);
write_string(szTeamName);
message_end();
}
UTIL_SayText - Посылает сообщение SayText.
UTIL_TeamInfo - Посылает сообщение TeamInfo.
-
PRoSToTeM@
-
- Сообщения: 2498
- Зарегистрирован: 26 мар 2010, 00:12
- Благодарил (а): 438 раз.
- Поблагодарили: 1125 раз.
PRoSToTeM@ » 14 авг 2011, 23:59
Очищает DHUD каналы.
- Код: Выделить всё
stock ClearDHUDMessages(pId, iClear = 8)
for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
show_dhudmessage(pId, "");
-
PRoSToTeM@
-
- Сообщения: 2498
- Зарегистрирован: 26 мар 2010, 00:12
- Благодарил (а): 438 раз.
- Поблагодарили: 1125 раз.
creator_52 » 15 авг 2011, 19:24
- Код: Выделить всё
stock random_str(s_str[],i_len)
{
for(new a;a<i_len;a++)
s_str[a]=random_num('a','z')
}
Добавлено спустя 1 час 10 минут 49 секунд:В конце концов можно и это
:
- Код: Выделить всё
stock user_kick(i_player,s_message[])
server_cmd("kick #%d %s",get_user_userid(i_player),s_message)
-
creator_52
-
- Сообщения: 513
- Зарегистрирован: 02 мар 2011, 15:45
- Откуда: Нижний Новгород
- Благодарил (а): 116 раз.
- Поблагодарили: 207 раз.
- Опыт программирования: Больше трех лет
Fedcomp » 15 авг 2011, 20:48
kick_user наверное лучше
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.
"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
-
Fedcomp
-
- Сообщения: 4936
- Зарегистрирован: 28 авг 2009, 20:47
- Благодарил (а): 813 раз.
- Поблагодарили: 1317 раз.
- Языки программирования: =>
pawn / php / python / ruby
javascript / rust
PRoSToTeM@ » 15 авг 2011, 21:16
Берёт и устанавливает vector оффсеты.
- Код: Выделить всё
stock GetPDataVector(pEntity, iOffset, Float:vec[3], iLinuxDiff = 5)
{
vec[0] = get_pdata_float(pEntity, iOffset++, iLinuxDiff);
vec[1] = get_pdata_float(pEntity, iOffset++, iLinuxDiff);
vec[2] = get_pdata_float(pEntity, iOffset, iLinuxDiff);
return 1;
}
- Код: Выделить всё
stock SetPDataVector(pEntity, iOffset, const Float:vec[3], iLinuxDiff = 5)
{
set_pdata_float(pEntity, iOffset++, vec[0], iLinuxDiff);
set_pdata_float(pEntity, iOffset++, vec[1], iLinuxDiff);
set_pdata_float(pEntity, iOffset, vec[2], iLinuxDiff);
return 1;
}
Пример использования:
- Код: Выделить всё
public plugin_init()
register_clcmd("say /test", "ClCmdTest");
public ClCmdTest(pId)
{
new Float:vec[3];
GetPDataVector(pId, m_vecEnemyLKP, vec, XO_MONSTER);
client_print(pId, print_chat, "Your: %f %f %f", vec[0], vec[1], vec[2]);
SetPDataVector(pId, m_vecEnemyLKP, Float:{213.3, 423.7, 1113.234}, XO_MONSTER);
GetPDataVector(pId, m_vecEnemyLKP, vec, XO_MONSTER);
client_print(pId, print_chat, "Changed: %f %f %f", vec[0], vec[1], vec[2]);
}
stock GetPDataVector(pEntity, iOffset, Float:vec[3], iLinuxDiff = 5)
{
vec[0] = get_pdata_float(pEntity, iOffset++, iLinuxDiff);
vec[1] = get_pdata_float(pEntity, iOffset++, iLinuxDiff);
vec[2] = get_pdata_float(pEntity, iOffset, iLinuxDiff);
return 1;
}
stock SetPDataVector(pEntity, iOffset, const Float:vec[3], iLinuxDiff = 5)
{
set_pdata_float(pEntity, iOffset++, vec[0], iLinuxDiff);
set_pdata_float(pEntity, iOffset++, vec[1], iLinuxDiff);
set_pdata_float(pEntity, iOffset, vec[2], iLinuxDiff);
return 1;
}
Добавлено спустя 24 минуты 1 секунду:Другой способ кика игрока:
- Код: Выделить всё
stock UTIL_Disconnect(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity = 0, const szReason[])
{
message_begin(iDest, SVC_DISCONNECT, vecOrigin, pEntity);
write_string(szReason);
message_end();
}
Пример использования:
- Код: Выделить всё
public plugin_init()
register_clcmd("say /test", "ClCmdTest");
public ClCmdTest(pId)
UTIL_Disconnect(MSG_ONE, _, pId, "Скачайте новую версию Counter-Strike^n^t^t^t^tDownload new version of Counter-Strike^n^t^t^t^thttp://www.amx-x.ru/cs");
stock UTIL_Disconnect(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity = 0, const szReason[])
{
message_begin(iDest, SVC_DISCONNECT, vecOrigin, pEntity);
write_string(szReason);
message_end();
}
Cкриншот:
svc_disconnect.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
PRoSToTeM@
-
- Сообщения: 2498
- Зарегистрирован: 26 мар 2010, 00:12
- Благодарил (а): 438 раз.
- Поблагодарили: 1125 раз.
Sho0ter » 15 авг 2011, 23:24
creator_52 писал(а):- Код: Выделить всё
stock random_str(s_str[],i_len)
{
for(new a;a<i_len;a++)
s_str[a]=random_num('a','z')
}
- Код: Выделить всё
stock random_string(output[], len)
{
for(new i; i < len; i++)
{
output[i] = random_symbol();
}
return 1;
}
stock random_symbol(imax = 0)
{
switch(random_num(0, 2))
{
case 0: return random_num(0, imax ? imax : 9);
case 1: return random_num('a', 'z');
case 2: return random_num('A', 'Z');
}
return 1;
}
-
Sho0ter
-
- Сообщения: 585
- Зарегистрирован: 31 мар 2010, 19:18
- Откуда: г. Белая Церковь, Украина
- Благодарил (а): 12 раз.
- Поблагодарили: 307 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Half-Life 1
-
PRoSToTeM@ » 15 авг 2011, 23:26
Ещё надо {[}]@#$ и т.д.
-
PRoSToTeM@
-
- Сообщения: 2498
- Зарегистрирован: 26 мар 2010, 00:12
- Благодарил (а): 438 раз.
- Поблагодарили: 1125 раз.
Sho0ter » 15 авг 2011, 23:32
PRoSToTeM@ писал(а):Ещё надо {[}]@#$ и т.д.
Нет, ненадо. Целью было создание генератора рандомной строки как генератор пароля в мускуле.
-
Sho0ter
-
- Сообщения: 585
- Зарегистрирован: 31 мар 2010, 19:18
- Откуда: г. Белая Церковь, Украина
- Благодарил (а): 12 раз.
- Поблагодарили: 307 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Half-Life 1
-
PRoSToTeM@ » 16 авг 2011, 03:31
Проигрывает звук на игроке .wav или .mp3
- Код: Выделить всё
stock PlaySound(pId, const szSound[], bool:bMp3 = false, bool:bLoop = false)
{
if (bMp3)
client_cmd(pId, "mp3 %s %s", bLoop ? "loop" : "play", szSound);
else
client_cmd(pId, "spk %s", szSound);
return 1;
}
Останавливает все звуки (все .wav и/или .mp3)
- Код: Выделить всё
stock StopSound(pId, iType = STOP_SOUND_ALL)
{
switch (iType)
{
case STOP_SOUND_WAV: client_cmd(pId, "stopsound");
case STOP_SOUND_MP3: client_cmd(pId, "mp3 stop");
case STOP_SOUND_ALL: client_cmd(pId, "stopsound;mp3 stop");
}
return 1;
}
-
PRoSToTeM@
-
- Сообщения: 2498
- Зарегистрирован: 26 мар 2010, 00:12
- Благодарил (а): 438 раз.
- Поблагодарили: 1125 раз.
quckly » 16 авг 2011, 07:05
Думаю так намного проще:
- Код: Выделить всё
stock kick_user(id, const szReason[] = "You kicked !")
{
message_begin(MSG_ONE, SVC_DISCONNECT, _, id)
write_string(szReason)
message_end()
}
Последний раз редактировалось
quckly 18 авг 2011, 13:04, всего редактировалось 1 раз.
-
quckly
-
- Сообщения: 403
- Зарегистрирован: 20 ноя 2009, 10:03
- Благодарил (а): 41 раз.
- Поблагодарили: 243 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
-
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10