AMX MOD X
Понедельник, 09.02.2026, 17:26:24



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Плагин для разыгровки
Immortal_BLGДата: Понедельник, 17.03.2008, 13:46:16 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 56
Репутация: 2
Статус: Не в сети
Вот код, тут надо сделать, чтоб первый раунд был на ножах, во втором раунде всем давались глоки и война была на них, на третем всем давались юсп и война была на них, четвертый на диглах и на пятом после рестарта шла норм игра...
Но как это сделать? Что у меня не правильно?
И еще как сделать, чтоб после пятого раунда, после рестарта, чтоб все не начиналось сначала?
Прикрепления: first_round_kni.sma (2.3 Kb)


Сообщение отредактировал Immortal_BLG - Вторник, 18.03.2008, 13:31:35
 
slogicДата: Понедельник, 17.03.2008, 20:13:01 | Сообщение # 2
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
не люблю я такие просьбы. во-первых код ужасный, если просишь кого помочь, почему не хочешь помочь тому, кто тебе может помочь, путем вставки комментариев, блоков TODO (что планируешь сделать и где). во-вторых, я бы на твоем месте задал (а еще лучше поискал ответы) вопросы:
1) как убрать стандартное оружие при рождении игрока
2) как выдать любое оружие игроку

Quote (Immortal_BLG)
И еще как сделать, чтоб после пятого раунда, после рестарта, чтоб все не начиналось сначала?

опять код за тебя написать? расскзываю о самом ценном, об алгоритме: очевидно надо считать раунды, и если счетчик первышает 5, то в функции-перехватчика спавнинга игрока (у тебя там должны отбраться оружия и даваться новые) делать ничего НЕ надо.
 
VENДата: Вторник, 18.03.2008, 20:14:08 | Сообщение # 3
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Не уговорил меня тебе помогать - не вижу желания получить качественную помощь с твоей стороны. И, если код небольшой, вылаживай его вдобавок в самом посте, не только как прикрепленный файл. Мне, например, не всегда охота закачивать файл, открывать его. Иногда проще быстро схватить суть проблемы и дать ответ налету. В общем, пока скажу только, что не стоит вызывать strip_user_weapons в событии ResetHUD - ведет к "падению" сервера. Я, кстати, тебе уже рассказывал, как наиболее правильно ловить момент спавнинга игрока, думаю, ты вспомнишь.

fm_strip_user_weapons - нет смысла использовать, как и включать fakemeta, т.к. ты можешь использовать strip_user_weapons() из fun модуля, ведь как раз его инклуда тоже включена в скрипт.

Для начала информации тебе хватит. А пока научись правильно задавать вопросы, в следующий раз с таким качеством постановки задачи делеко можешь и не уехать. Помни, что хорошо заданный вопрос содержит половину ответа.

 
Immortal_BLGДата: Пятница, 21.03.2008, 10:16:27 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 56
Репутация: 2
Статус: Не в сети
Вот VEN в основном надежда на тебя :) тут рабочая версия плагина, НО если раскомментировать строчку 119 или просто fm_strip_user_weapons(id), то сервер падает а если использовать register_logevent("logevent_round_start", 2, "1=Round_Start"), то игрок может и во время игры подцепиться и действя к игроку не применятся...

Как еще можно сделать? Помогите плиз

У меня есть еще мысль попробовать сделать разоружение как в плагине amx_super, когда применяешь к игроку команду amx_disarm, что скажите по этому поводу? Просто я оценив код разоружения(на своем нубском уровне :) ) понял, что там оружие не удаляется а телепортируется в точку, откуда оно взялось(ну что-то в этом роде :) ) командой fm_set_user_origin(index, origin[3])

Code
stock fm_set_user_origin(index, /* const */ origin[3]) {
  new Float:orig[3]
  IVecFVec(origin, orig)

  return fm_entity_set_origin(index, orig)
}

P.S. 2 VEN strip_user_weapons() из fun модуля тоже приводит сервер к падению...

Прикрепления: pistols_fight.sma (4.6 Kb)


Сообщение отредактировал Immortal_BLG - Пятница, 21.03.2008, 10:25:12
 
BruteДата: Пятница, 21.03.2008, 14:15:37 | Сообщение # 5
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Добавил в описание темы: "Новый раунд с новым оружием", т.к. не совсем понятно о чём тема.
 
manyДата: Пятница, 21.03.2008, 22:37:05 | Сообщение # 6
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
я слышал что strip_user_weapons() может привести к падению сервера если у игрока нету оружия (вроде blush )
а вообще можешь сделать так
client_cmd(id,"hud_fastswitch 1");
client_cmd(id,"slot1");
client_cmd(id,"drop");
client_cmd(id,"slot2");
client_cmd(id,"drop");
client_cmd(id,"slot5");
client_cmd(id,"drop");
Но это так.. если ниче не поможет
 
DaTaДата: Пятница, 21.03.2008, 23:00:14 | Сообщение # 7
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote
client_cmd(id,"hud_fastswitch 1");

это мне этично :)
 
BruteДата: Пятница, 21.03.2008, 23:09:38 | Сообщение # 8
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Quote (DaTa)
это мне этично :)

+ на ботов это не влияет=)
 
manyДата: Пятница, 21.03.2008, 23:50:54 | Сообщение # 9
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
ну поэтому я и написал "Но это так.. если ниче не поможет" ))
А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть)
 
BruteДата: Пятница, 21.03.2008, 23:59:18 | Сообщение # 10
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Quote (many)
А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть)

В общем у меня была такая проблема в плагине "VIP-plugin", помню я расставлял задержки set_task(...), можешь мой исходник глянуть, может найдёшь аналогию.
 
VENДата: Суббота, 22.03.2008, 02:54:43 | Сообщение # 11
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
strip_user_weapons() из fun модуля тоже приводит сервер к падению...
Этого и следовало ожидать, ведь, эта функция по технике практически эквивалентна fm_strip_user_weapons(), которая была создана мной на основе strip_user_weapons().

Quote
А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть)
Дело в ResetHUD, как было отмечено выше. Вообще, ResetHUD- нехороший способ отлова спавна игрока.

Наиболее эффективный способ:

Code
public plugin_init() {
          RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}

public fwHamPlayerSpawnPost(iPlayerId) {
          if (!is_user_alive(iPlayerId))
                  return HAM_IGNORED

          // ...

          return HAM_HANDLED
}

Quote
расставлял задержки set_task(...)
В 95% случаев, когда писатели плагинов используют set_task(), этого можно избежать. Нет смысла в установке задачи, когда есть более эффективные и точные методы.
 
Immortal_BLGДата: Суббота, 22.03.2008, 07:39:10 | Сообщение # 12
Лейтенант
Группа: Пользователи
Сообщений: 56
Репутация: 2
Статус: Не в сети
Спасибо VEN, я кстати видел, что можно и так(http://forums.alliedmods.net/showpost.php?p=555687&postcount=67), но не знал как правильно это осуществить...
Сейчас все работает, но есть 2 вопроса:
1) зачем проверять жив ли игрок или нет? Веть этож спавн игрока(или можно спавнуться мертвым? :) )
2) вот часть кода плагина, сдесь я убрал return HAM_IGNORED и return HAM_HANDLED, работает отлично :) , ведь это же не повлияет на код? :)
Code
public fwHamPlayerSpawn(id)
     if(get_pcvar_num(g_pcvar_FRK_Enable)&&is_user_alive(id)&&g_iRoundCount){
         fm_strip_user_weapons(id)
         fm_give_item(id,"weapon_knife")
         switch(round){
             case 1:{
                 fm_give_item(id,"weapon_glock18")
                 fm_give_item(id,"ammo_9mm")
                 fm_give_item(id,"ammo_9mm")
                 fm_give_item(id,"ammo_ 9mm" )
                 fm_give_item(id,"ammo_9mm")
             }
             case 2:{
                 fm_give_item(id,"weapon_usp")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_ 45ac p")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_ 45ac p")
                 fm_give_item(id,"ammo_45acp")
                 fm_give_item(id,"ammo_45acp")
             }
             case 3:{
                 fm_give_item(id,"weapon_deagle")
                 fm_give_item(id,"ammo_50ae")
                 fm_give_item(id,"ammo_50ae")
                 fm_give_item(id,"ammo _50a e")
                 fm_give_item(id,"ammo_50ae")
                 fm_give_item(id,"ammo_50ae")
             }
         }
     }

Ниже готовый плагин, если кому надо...
Прикрепления: pistols_fight.sma (5.2 Kb)


Сообщение отредактировал Immortal_BLG - Суббота, 22.03.2008, 07:46:35
 
VENДата: Суббота, 22.03.2008, 10:34:03 | Сообщение # 13
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
Спасибо VEN, я кстати видел, что можно и так(http://forums.alliedmods.net/showpost.php?p=555687&postcount=67), но не знал как правильно это осуществить...

1) зачем проверять жив ли игрок или нет?

Ну, я ведь оба эти вопроса тебе уже осветил ранее в одной из твоих тем - перечитай вторую половину данного сообщения снова.

Quote
это же не повлияет на код?
В твоем случае - нет, т.к. если ничего не возвращать в теле функции FM/HAM-хука, то будет считаться, что возвращено FMRES_IGNORED/HAM_IGNORED.
 
Immortal_BLGДата: Суббота, 22.03.2008, 11:59:22 | Сообщение # 14
Лейтенант
Группа: Пользователи
Сообщений: 56
Репутация: 2
Статус: Не в сети
Все, понятно, еще раз спасибо и я извиняюсь за первый вопрос, че-то ступил :)
 
VENДата: Суббота, 22.03.2008, 18:17:48 | Сообщение # 15
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
зачем проверять жив ли игрок или нет? Веть этож спавн игрока
Для получения более подробной информации по данной теме рекомендую прочесть новую статью: События Player Spawn / Round Start / Round End / New Round (регистрирование спавна игрока и начала/конца/нового раунда).
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026