IP: 38.107.179.227 > [ Вход ] > [ Поиск по Форуму ]
Новые SourceMod/EventScripts Плагины для Сервера CS Source [ Предложить ]
[ Заказать Приватный Скрипт ] - [ Аренда Сервера ]
wS_Hide_Radar v1.0 - Откл радар у живых игроков



Скрипты/Плагины Eventscripts
Загрузок: 8
More_ES_Commands v1.3 - SM команды для ES скриптинга



Расширения для Сервера CSS
Загрузок: 28
wS_Entities v1.1 - Может украшать карты



Скрипты/Плагины SourceMod
Загрузок: 51
wS_Fatal_Flash - Флешка может убить



Скрипты/Плагины SourceMod
Загрузок: 18
wS_Props_Mod v1.2 - Мод Строители для SM



Скрипты/Плагины SourceMod
Загрузок: 73
Меню

Страница 1 из 11
Форум » Mattie Eventscripts » [ ES ] Помощь/Вопросы » Props
Props
SMAX1 Дата: Понедельник, 12.09.2011, 14:17:27 | Сообщение # 1
Offline
Сообщений: 10
Репутация: 0 [ +/- ]
Вот пишу свой PropsMod и никак не могу понять какой код нужен 1) Чтобы удалить предмет 2) Повернуть. Если не сложно напишите(только не на Python`е) В заранее спс)


Сообщение отредактировал SMAX1 - Понедельник, 12.09.2011, 14:17:40
 
_wS_ Дата: Понедельник, 12.09.2011, 15:25:42 | Сообщение # 2
Offline
Сообщений: 1081
Репутация: 161 [ +/- ]
Чтобы это сделать, надо сначала подумать, как получить индекс предмета. Единственное, что приходит в голову, это вариант с помощью команды es_entsetname. Это позволяет установить объекту (на котором прицел) имя (targename). И нужно сохранять индексы созданных предметов.

es_e.txt

Code
event load
{
    es_xset n 0
    es_xset v 0
    es_xset x 0
    es_xset y 0
    es_xset z 0
    keygroupremove wS
    es_xkeygroupcreate wS
}

event unload
{
    keygroupremove wS
}

event round_start
{
    keygroupremove wS
    es_xkeygroupcreate wS
}

event player_say
{
    // Создаем предмет и запоминаем его индекс
    if (event_var(text) == "1") do
    {
       es_prop_dynamic_create event_var(userid) "props/cs_office/vending_machine"
       es_keycreate wS server_var(eventscripts_lastgive)
    }

    // Удаляем
    if (event_var(text) == "2") do
    {
       es_entsetname event_var(userid) xz_prop
       es_xforeachkey prop_index in wS "es_xdoblock e/prop_delete"
    }

    // Поворачиваем
    if (event_var(text) == "3") do
    {
       es_entsetname event_var(userid) rotate_name
       es_xforeachkey prop_index in wS "es_xdoblock e/prop_rotate"
    }
}

block prop_delete
{
    es_entitygetvalue n server_var(prop_index) targetname
    if (server_var(n) == "xz_prop") do
    {
       es_msg "Индекс предмета:" server_var(prop_index) "(удаляем)"
       es_remove server_var(prop_index)

       // Удаляем индекс из базы
       es_keydelete wS server_var(prop_index)
    }
}

block prop_rotate
{
    es_entitygetvalue n server_var(prop_index) targetname
    if (server_var(n) == "rotate_name") do
    {
       es_entitygetvalue v server_var(prop_index) angles
       es_token x server_var(v) 1
       es_token y server_var(v) 2
       es_token z server_var(v) 3
       es_xmath y + 45
       es_xformatv v "%1 %2 %3" x y z
       es_entitysetvalue server_var(prop_index) angles server_var(v)
       es_entitysetvalue server_var(prop_index) targetname ""
    }
}


Запусти скрипт и проверь в чате три команды: 1, 2 и 3.

1. Создали проп и запомнили его индекс

2. Удаляем предмет. Устанавливаем ему имя "xz_prop" и запускаем цикл по всем индексам, которые мы запомнили. Зная индекс, получаем targetname пропа, если оно равно тому, что мы установили, значит это предмет, на который мы в данный момент смотрим. Удаляем его с карты и из базы, в которой его запоминали.

3. Тот же цикл, только теперь поворачиваем проп с помощью angles (углы). Но этот вариант плохо поворачивает, если предмет стоит на неровной поверхности.
 
SMAX1 Дата: Понедельник, 12.09.2011, 15:33:37 | Сообщение # 3
Offline
Сообщений: 10
Репутация: 0 [ +/- ]
о спс огромное klas
 
McFlip0076 Дата: Четверг, 29.12.2011, 23:06:09 | Сообщение # 4
Offline
Сообщений: 7
Репутация: 0 [ +/- ]
А есть еще вопрос по props mod-у
если не сложно можешь написать событие которое пишет в чат кто ставит пропс и тоже самое если наводишь на предмет! Мод уже готов! Только это нигде не могу найти(((
 
_wS_ Дата: Пятница, 30.12.2011, 01:30:34 | Сообщение # 5
Offline
Сообщений: 1081
Репутация: 161 [ +/- ]
Quote (McFlip0076)
написать событие которое пишет в чат кто ставит пропс

Это вообще просто.. Ты создал меню, игрок, например, выбирает опцию 1 'Автомат':

Code
block select_yourMenu
{
    if (server_var(_popup_choice) == 1) do
    {
       es_prop_dynamic_create server_var(_popup_userid) "props/cs_office/vending_machine"
       es_xset x 0
       es_getplayername x server_var(_popup_userid)
       es_msg server_var(x) "создал автомат"
    }
}


Quote (McFlip0076)
и тоже самое если наводишь на предмет!

А это уже сделать не получится на ESS (только если подключено какое-то расширение), да и рано браться тебе за такое, если ты пока простого не можешь понять.
 
McFlip0076 Дата: Понедельник, 02.01.2012, 03:29:08 | Сообщение # 6
Offline
Сообщений: 7
Репутация: 0 [ +/- ]
Смотри
Мод написан
хочу его переделать под свой сервер! все готово кроме
Quote (_wS_Schmidt_)
и тоже самое если наводишь на предмет!

Я на одном сервере видел такой пропс мод.
И еще у меня какая то ошибка
В место имени пишет 0

Добавлено (02.01.2012, 03:17:12)
---------------------------------------------
а какое там надо событие прописать что бы ник писали?

Quote (_wS_Schmidt_)
 es_prop_dynamic_create server_var(_popup_userid) "props/cs_office/vending_machine"
       es_xset x 0

Добавлено (02.01.2012, 03:29:08)
---------------------------------------------
Вот моя робота
Посмотри плиз что не так

 
McFlip0076 Дата: Понедельник, 02.01.2012, 03:35:25 | Сообщение # 7
Offline
Сообщений: 7
Репутация: 0 [ +/- ]
Не могу добавить файл=(

Прикрепления: es_props_mod.txt(24Kb)
 
_wS_ Дата: Понедельник, 02.01.2012, 15:22:15 | Сообщение # 8
Offline
Сообщений: 1081
Репутация: 161 [ +/- ]
Если переменная p_msg_create в eventscripts/props_mod/props.cfg равна 1, то будет сообщение в чате, вот же в коде:

Code
if (server_var(p_msg_create) = 1) then es_xgetplayername p_nick server_var(_popup_userid)

// и ниже:

ifx true(p_msg_create) do
{
    es_xformatv p_f "#lightgreen[Строители] #green%1 #lightgreenсоздал маленькую коробку" p_nick
    es_msg #multi server_var(p_f)
}
 
McFlip6358 Дата: Вторник, 03.01.2012, 01:23:48 | Сообщение # 9
Offline
Сообщений: 8
Репутация: 0 [ +/- ]
Эта переменная не работает.
Работает вот это событие.
Quote (_wS_Schmidt_)
   es_prop_dynamic_create server_var(_popup_userid) "props/cs_office/vending_machine"
       es_xset x 0
       es_getplayername x server_var(_popup_userid)
       es_msg server_var(x) "создал автомат"

Но в чате в место ника пишет 0
А берет оно вот от сюда
Quote (McFlip0076)
es_xset x 0
 
McFlip6358 Дата: Вторник, 03.01.2012, 01:46:43 | Сообщение # 10
Offline
Сообщений: 8
Репутация: 0 [ +/- ]
Вот сделал пару ап дейтов.
Но почему то не работает(( Пытался подражать полностью моду.
Короче сам посмотри (3 страницу пропов и чат(на что поменять событие
Quote (McFlip6358)
es_xset x 0
и мож сказать почему не работает 3 страница(я в недоумении)))
На название не обращай внимание(это я для себя версии пишу)

Прикрепления: es_props_mod_v5.txt(31Kb)
 
_wS_ Дата: Вторник, 03.01.2012, 07:25:52 | Сообщение # 11
Offline
Сообщений: 1081
Репутация: 161 [ +/- ]
У тебя этот код ЛИШНИЙ:

Code
es_xset x 0
es_getplayername x server_var(_propup_userid)
es_msg server_var(x)"Создал дорожный знак"


Снова повторяю: Вот мы получаем имя (уже есть в коде):

Code
if (server_var(p_msg_create) = 1) then es_xgetplayername p_nick server_var(_popup_userid)

// и ниже:

if (server_var(_popup_choice) = 3) do
{
     ifx true(p_msg_create) do
     {
        es_xformatv p_f "#lightgreen[Строители] #green%1 #lightgreenсоздал гидрант" p_nick
        es_msg #multi server_var(p_f)
     }
}


В props.cfg должно быть es_xset p_msg_create 1. Документ сохраняй через notepad++ в utf-8 без bom. Здесь, после server_var(x) не стоит пробел у тебя:

Code
es_msg server_var(x)"Создал гидрант"


3-я страница не работает, т.к. ты не сделал popup menuselect pmenu6 props_mod/pmenu6.
Не мучай чужой код, когда только начинаешь учиться скриптить, пиши с нуля свои скрипты по немногу, чтобы знать о каждой команде, которую используешь, и понимать, как она работает.

Создай в eventscripts папку e и в ней es_e.txt и эксперементируй с разным кодом, пробуй разные команды и события по одному, записывай о том, что узнал, в черновик. Вот, например, тест:

Code
// Проверь, как работает ifx true

event load
{
     es_xset x 1
     es_msg server_var(x)
     ifx true(x) do
     {
        es_xmsg -> true
     }
     es_xelse es_xmsg -> false
}

// Так узнаешь, что 2-ой вариант не работает

event player_say
{
     es_getplayername x event_var(userid)
     if (event_var(text) == "1") do
     {
        es_msg server_var(x) "создал предмет"
     }
     if (event_var(text) == "2") do
     {
        es_msg server_var(x) создал предмет
     }
     if (event_var(text) == "3") do
     {
        es_xformatv x "%1 создал предмет" x
        es_msg server_var(x)
     }
     if (event_var(text) == "4") do
     {
        es_msg server_var(x) created new prop
     }
}


Запускаешь тестовый сервер на компе без параметра -console. Вводишь команду es_load e и смотришь в консоль, что выдаст скрипт. Потом меняешь код в es_e.txt на какой-то другой, сохраняешь и перезапускаешь командой es_reload e.

Не понимаю, разве ты не можешь чувствовать, как тебе лучше учиться? Просто всё, о чём я писал, должно быть и так понятно, как вода мокрая и огонь горячий.
 
McFlip0076 Дата: Четверг, 26.01.2012, 18:01:31 | Сообщение # 12
Offline
Сообщений: 7
Репутация: 0 [ +/- ]
Здрраствуйте) я тут на днях все таки решился добавить еще одну страницу пропов) но почему то моя попытка не обвинчалася успехом(((
есть 2 проблемы
1)со 2 страници ставятся двйные пропы вместе с 3 страницей(
и 2) 3 страница не открывается(
Если кому не сложно подскажите что я упустил!
вот сам мод

Прикрепления: 5506793.txt(27Kb)
 
_wS_ Дата: Четверг, 26.01.2012, 18:56:34 | Сообщение # 13
Offline
Сообщений: 1081
Репутация: 161 [ +/- ]
Почему props.cfg не прикрепил? У тебя там скобки не все закрыты. И ты посмотри, где у тебя в 'block pmenu2' находится if (server_var(_popup_choice) = 9) then popup send pmenu6 server_var(_popup_userid) - очень глупо, оно внутри условия if (server_var(_popup_choice) in "12345678") do

Code
// если выбрана опция от 1 до 8, то..
if (server_var(_popup_choice) in "12345678") do
{
     // это как ответить на вопрос 'сколько время' -> 'мне холодно' (смысла ноль)
     if (server_var(_popup_choice) == 9) then ..


Notepad++ подсвечивает скобки и темболее можно проверить их ТУТ
 
McFlip0076 Дата: Четверг, 26.01.2012, 23:10:31 | Сообщение # 14
Offline
Сообщений: 7
Репутация: 0 [ +/- ]
Вот

Прикрепления: props.cfg(2Kb)
 
Форум » Mattie Eventscripts » [ ES ] Помощь/Вопросы » Props
Страница 1 из 11
Поиск:



© wS | Скрипты для Сервера CS Source на Заказ Создать сайт бесплатно