AMX MOD X
Пятница, 29.03.2024, 03:17:13



Приветствую Вас Гость | RSS
[ Главная ] [ Помогите комрады с программингом. - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Помогите комрады с программингом. (По поводу проверки живых игроков и начало раунда...)
Помогите комрады с программингом.
SVTДата: Вторник, 17.11.2009, 00:56:06 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Вот в чём собственно вопрос.
Я пытаюсь написать свой античит. Вернее он уже написан и работает.
Прикол его в том, что там у админов забирается всё оружие и они его не могут поднимать.
Но по началу раунда контра автоматом даёт пушку. Если е выкинуть она соответсвенно не возьмётся, но как сделать чтобы при начале раунда снова срабатывал strip?
И еще как сделать проверку на наличие мёртвых игроков в команде. То етсь если все в команде трупы, а только один админ жив он просто умирал(kill), ну или не важно проверка типа

Если остался только админ= {... }

Надеюсь на вас сотоварщи)))

ЗЫ: я только начал изучать pawn, да вот проблема нет нормальной инфы. Всё либо оч просто,либо тукло описанно в двух словах на оф сайте по фукциям.
Тут тоже есть ссылка на книгу скачать pawn-lang.pdf но как и на других сотнях сайтов ссылка мёртвая((( Плыз помогиет нормальной инфой! Где не только на словах, а то приходится учить только смотря код других, но эт не оч удобно и часто не так понятно(

 
ZETAДата: Вторник, 17.11.2009, 09:13:13 | Сообщение # 2
Генерал-майор
Группа: Скриптеры
Сообщений: 369
Репутация: 21
Статус: Не в сети
Quote (SVT)
Прикол его в том, что там у админов забирается всё оружие и они его не могут поднимать. Но по началу раунда контра автоматом даёт пушку. Если е выкинуть она соответсвенно не возьмётся, но как сделать чтобы при начале раунда снова срабатывал strip?

Про начало раунда почитай тут. Оружие отнимается командой strip_user_weapons(index) - модуль fun. Я точно не понял, что тебе надо, но вот для примера - при появлении в начале раунда у админов отбирается оружие

Code

#include <fun>
#include <hamsandwich>

public plugin_init() {
    register_plugin("","","")
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
}

public player_spawn(id) {
    if(is_user_admin(id)) {
     strip_user_weapons(id)
    }
}

Насчет второго кода не уверен...Возможно не будет работать.

Code
public check() {
   get_players(players[32],num,"a")
     
   if((num==1)&&(is_user_admin(players[1])) client_cmd(players[1],"kill")

   set_task(5.0,"check")
}

Кстати, вся документация по PAWN на офф. сайте есть


Говори что думаешь и думай что говоришь...

Сообщение отредактировал ZETA - Вторник, 17.11.2009, 10:59:38
 
SVTДата: Вторник, 17.11.2009, 10:55:34 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Zeta спасибо, буду разбираться.
А вот у меня возникла идея, которая может хорошо упростить всё это дело.
Можно ли просто запретить нужному игроку стрелять либо наносить нулевой урон?
Приэтом чтобы не все не могли стрелять или наносить,а только нужный, например тот кто прописал эту команду?
 
defaultNick8433Дата: Вторник, 17.11.2009, 13:17:14 | Сообщение # 4
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Репутация: 19
Статус: Не в сети
Quote (SVT)
например тот кто прописал эту команду?

Какую команду?

Вот код,когда игрок введёт в чат juk,и ему нельзя будет причинять урон игрокам,пока он не умрёт.

Code
#include <amxmodx>
#include <hamsandwich>

new bool:at_player[33]
new g_iConAtPlayer

public plugin_init()
{
register_plugin("x","x","x")
register_clcmd("say juk","jukk")
register_event("DeathMsg","onDeath","a")
RegisterHam(Ham_TakeDamage,"player","event")

g_iConAtPlayer=get_user_msgid("Statu sIcon")
}
public jukk(id)
{
at_player[id]=true

new name[32]

get_user_name(id,name,sizeof(name))
client_print(0,print_chat,"Za4em %s vvel ety komandy",name)

message_begin(MSG_ONE_UNRELIABLE,g_iConAtPlayer,{0,0,0},id)
write_byte(1)
write_string("bucket3")
write_byte(0)
write_ byte(255)
write_byte(0)
message_end()

return PLUGIN_HANDLED
}
public event(idinflictor,idattacker,Float:damage,damagebits)
{
if(at_player[idattacker])
{
client_print(idattacker,print_chat,"Vam nelzya pri4in9t uron igrokam")
return HAM_SUPERCEDE
}
return PLUGIN_CONTINUE
}
public onDeath()
{
new iVictim=read_data(2)

if(at_player[iVictim])
at_player[iVictim]=false
}
public client_putinserver(id)
{
at_player[id]=false
}
public client_disconnect(id)
{
at_player[id]=false
}


Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
 
SVTДата: Вторник, 17.11.2009, 14:55:27 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Спасибо дружище!!! Мне немного не это нужно, но этотоже полюбому пригодится!!!!

Попробую написать суть проблемы.

Я хочу чтобы у админа ввевшего команду , например ghost забиралось всё оружие.
Я это сделал, но понял что оружие можно подбирать. Я это исправил, теперь оно игнорируется.
Но понял что в начале раунда следующего оружие само даётся, спасибо ЗЭТЕ я исправили это, но осталась еще одна проблема, на ганмоде оружие можно по команде amx_gangame_level "имя" "уровень" давать!
Вот как сделать так чтобы эта команда не была запрещена для других админов, а лишь для тех кто введёт в консоли её во время прибывания в ghost.
Просто я хочу уберечь серваки от неадекватных админов((
Либо вот что бы мне сильно помогло и исключило остальные проверки, как просто убрать для этого игрока наносимый урон. Пусть у него нож, пусть хоть пелемёт с гранатой, либо что бы не было урона, либо чтобы както перехватывалось событие нажатия мышек и просто не происходило ничего!
Плыз помогите. Оч нужно. Всё остальное работает. Если не вы то ктоже?)))

 
defaultNick8433Дата: Вторник, 17.11.2009, 15:09:19 | Сообщение # 6
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Репутация: 19
Статус: Не в сети
Регистрируешь событие,когда at_player[index](по своему коду говорю)даётся оружие,и если оружие даётся игроку,который ввёл команду ghost блокировать это событие.Пример ниже:
Code
//Регистрируешь событие,для которого нужен модуль hamsandwich
RegisterHam(Ham_AddPlayerItem,"player","fwdAddPlayerItem")//игроку даётся оружие

public fwdAddPlayerItem(id)//функция,которая вызовет Ham_AddPlayerItem
{
return at_player[id] ? HAM_SUPERCEDE : HAM_IGNORED//блокировка функции,если к ней причастен at_player[id]
}


Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001


Сообщение отредактировал defaultNick8433 - Вторник, 17.11.2009, 15:10:36
 
SVTДата: Вторник, 17.11.2009, 17:41:24 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Блин не выходит нифига)))
У меня получилось сделать проверку на ввод команды и всё работало, но я попробовал непосредсвенно на самом моде, а он перехватывает команду и она не срабатывает(((
Ну если не команда, товсё таки даже было полезней еслиб оружие не стреляло просто, пусть даже ствол в руке будет, а то если нет оружия имена игроков не отображаются((( Еще одна беда.
Прикрепления: svt_ukrgameadmi.sma (4.1 Kb)


Сообщение отредактировал SVT - Вторник, 17.11.2009, 17:42:56
 
ZETAДата: Вторник, 17.11.2009, 18:08:21 | Сообщение # 8
Генерал-майор
Группа: Скриптеры
Сообщений: 369
Репутация: 21
Статус: Не в сети
Ну я в одном плагине реализовал одну вещь для угара. Может тебе тоже поможет.
Вобщем тем кому ты хочешь "поставить ghost" просто посылаешь каждые 2 секунды команду drop. Довольно забавно смотриться, игрок не сможет брать оружие, только с ножиком бегать...

Не помню точно, можно ли в GG выкидывать оружие, но если можно, то даже команда amx_gangame_level не поможет...


Говори что думаешь и думай что говоришь...

Сообщение отредактировал ZETA - Вторник, 17.11.2009, 18:09:44
 
SVTДата: Вторник, 17.11.2009, 19:00:18 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Во дружище а как это сделать? Подсобишь с кодом?
И если ты говоришь каждые 2 сек, то это можно и 1 сек наверное тоже?
 
ZETAДата: Вторник, 17.11.2009, 19:13:48 | Сообщение # 10
Генерал-майор
Группа: Скриптеры
Сообщений: 369
Репутация: 21
Статус: Не в сети
Quote (SVT)
Во дружище а как это сделать? Подсобишь с кодом?

Я из универа писал...Щас подробней напишу...

Code
public ghost_go(id) {
   set_task(2.0,"func_drop_weapon",id,_,_,"b")
}

public func_drop_weapon(id) {
   client_cmd(id,"drop")
   return PLUGIN_HANDLED
}

Где 2.0 - это время, через которое посылается команда...

Можно еще с условием сделать...

Code
public func_drop_weapon(id) {
  new weapon = get_user_weapon(id,_,_)
  if(weapon != CSW_KNIFE) client_cmd(id,"drop")
  return PLUGIN_HANDLED
}

Quote (SVT)
И если ты говоришь каждые 2 сек, то это можно и 1 сек наверное тоже?

2 секунды вполне хватает, чтобы игрок не смог выстрелить, меньшее значение просто перегружать будет...


Говори что думаешь и думай что говоришь...

Сообщение отредактировал ZETA - Вторник, 17.11.2009, 19:17:23
 
PomanoBДата: Вторник, 17.11.2009, 19:32:35 | Сообщение # 11
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Могу добавить, что можно использовать engclient_cmd, тогда команда не будет посылаться в консоль клиенту и нагрузка будет значительно меньше

http://romanov4400.mybrute.com
 
defaultNick8433Дата: Вторник, 17.11.2009, 20:23:37 | Сообщение # 12
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Репутация: 19
Статус: Не в сети
Quote (SVT)
Блин не выходит нифига)))

Правильно,у тебя в функции public jukk(id) игрок через какие-то действия умирает(clint_cmd(id,"kill")),соответственно даётся at_player[iVictim]=false

И вобще код странный какой-то.Админом ты должен обозначать только этим параметром at_player[index],вот и регулируй под него.


Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001


Сообщение отредактировал defaultNick8433 - Вторник, 17.11.2009, 20:23:59
 
SVTДата: Среда, 18.11.2009, 01:22:15 | Сообщение # 13
Сержант
Группа: Пользователи
Сообщений: 20
Репутация: 0
Статус: Не в сети
Друганы спасибо вам всем!!!!! :) :)
defaultNick8433 и ZETA ваши хэлпы мне тоже помогли кой в чём разобраться и пригодятся!!
И PomanoB спасибо тебе мил человек!!! Я поискал примеры использования этой функции и нашёл на болгарском сайте пример игры кнайфс онли.
Переделал её под то чтобы не ножи а вобще ничего не было и чтобы работало не для все, а лишь для одного человека!!!
Правда еще не тестил на серваках, но думаю всё буд окей)
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Помогите комрады с программингом. (По поводу проверки живых игроков и начало раунда...)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024