|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Отключить гравитацию для игрока (отправить его в полёт)
|
|
sonicsonedit | Дата: Среда, 25.03.2009, 14:49:47 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Не в сети
| Может кто знает, как прописать нулевую гравитацию для игрока? set_pev(id, pev_gravity, 0.0) не прописывает нулевую гравитацию, а лишь сбрасывает на дефолтную (1.0)! Буду очень признателен помощи!
|
|
| |
slogic | Дата: Среда, 25.03.2009, 15:22:01 | Сообщение # 2 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Code float gravity; // % of "normal" gravity Если происходит сброс в твоем моде, попробуй в post версии DLLFunc_PlayerPreThink выставлять ее в нужное тебе значение.
|
|
| |
sonicsonedit | Дата: Среда, 25.03.2009, 15:44:08 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Не в сети
| Дело не в моде совсем. http://www.amxmodx.org/funcwiki.php?go=func&id=125 Quote Gravity can be set to a negative value. Also, be aware 0.0 sets gravity to normal the same as 1.0. т.е. сама функция set_pev(id, pev_gravity, 0.0) сбрасывает гравитацию на дефолтную. А мне надо чтобы гравитация вообще "отключалась" для игрока. Как это сделать? Возможно есть иные команды?
|
|
| |
Koka | Дата: Среда, 25.03.2009, 16:23:24 | Сообщение # 4 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| вот дефолтная set_pev(id, pev_gravity, 1.0) отключение гравитации повлечет за собой то что ты как подпрыгнеш так и останешься на потолке висеть юзай set_pev(id, pev_gravity, 0.15) пс: 1.0 - это 100% от квары sv_gravity ( = 800 по умолчанию), поэкспеременрируй с этой кварой и посмори какая гравитация те годица - потом переведи ее в проценты и поставь в set_pev
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
Сообщение отредактировал Koka - Среда, 25.03.2009, 16:24:49 |
|
| |
sonicsonedit | Дата: Среда, 25.03.2009, 17:21:16 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Не в сети
| Quote вот дефолтная set_pev(id, pev_gravity, 1.0) да, и set_pev(id, pev_gravity, 0.0) даёт точно такой-же эффект - ставит дефолтную. Quote отключение гравитации повлечет за собой то что ты как подпрыгнеш так и останешься на потолке висеть Именно это мне и надо. Что я пытаюсь сделать - летающего игрока. Нажимает на ctrl - спускается, на пробел - поднимается. Нажимает на стрелки - двигается в соответствующем направлении (готово), двигается рывками (использую set_pev(id, pev_velocity, velocity)) и именно для этого мне надо отключить гравитацию, потому что если есть даже слабая гравитация, то 1) игрок может управлять своим полётом, что не в коем случае не должно происходить 2) игрок постепенно опускается на землю, что крайне не желательно, т.к. он должен парить в воздухе, и контролировать свою высоту через ctrl и пробел. Quote пс: 1.0 - это 100% от квары sv_gravity ( = 800 по умолчанию), поэкспеременрируй с этой кварой и посмори какая гравитация те годица - потом переведи ее в проценты и поставь в set_pev Это я знаю...вопрос в другом - что происходит на сервере при sv_gravity 0 ? Как прописать sv_gravity 0 для конкретного игрока?
Сообщение отредактировал sonicsonedit - Среда, 25.03.2009, 17:22:44 |
|
| |
slogic | Дата: Четверг, 26.03.2009, 14:42:24 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (sonicsonedit) 1) игрок может управлять своим полётом, что не в коем случае не должно происходить Сделай ему pev_movetype = MOVETYPE_FLY.
|
|
| |
sonicsonedit | Дата: Четверг, 26.03.2009, 15:03:05 | Сообщение # 7 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Не в сети
| Quote pev_movetype = MOVETYPE_FLY У тебя сработало? Потому что у меня ничего не изменяется вообще.
|
|
| |
slogic | Дата: Четверг, 26.03.2009, 16:58:33 | Сообщение # 8 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Проверил, не сработало. Надо копать дальше.
|
|
| |
Koka | Дата: Пятница, 27.03.2009, 06:51:45 | Сообщение # 9 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| видел этот плагин от ИксОленя на алиеве модерсе в теме помощъ, но там поиск ща непашед, поэтому помоч не могу, поищи там сам :/ Добавлено (2009-03-27, 6:51 Am) --------------------------------------------- А во нащел: нажымай коро4е сэй /флу - и будишъ литать Code #include <amxmodx> #include <amxmisc> #include <fakemeta>
#define NOCLIP_SPEED 250.0
new bool:g_flying[33];
public plugin_init() { register_plugin("Noclip Simulator", "0.1", "Exolent"); register_clcmd("say /fly", "CmdFly"); register_forward(FM_PlayerPreThink, "FwdPlayerPreThink"); }
public client_disconnect(client) { g_flying[client] = false; }
public CmdFly(client) { g_flying[client] = !g_flying[client]; client_print(client, print_chat, "You are no%s flying.", g_flying[client] ? "w" : " longer"); set_pev(client, pev_gravity, g_flying[client] ? 0.000001 : 1.0); return PLUGIN_HANDLED; }
public FwdPlayerPreThink(client) { if( !g_flying[client] || !is_user_alive(client) ) return; set_pev(client, pev_movetype, MOVETYPE_FLY); new Float:maxspeed = NOCLIP_SPEED; if( is_user_ducking(client) ) { // I don't know the real calculation for ducking velocity // but this will have to do for now maxspeed /= 2.0; } static Float:aim_velocity[3]; velocity_by_aim(client, floatround(maxspeed), aim_velocity); static Float:client_origin[3]; pev(client, pev_origin, client_origin); new button = pev(client, pev_button); new Float:velocity[3]; if( button & IN_FORWARD ) { velocity[0] += aim_velocity[0]; velocity[1] += aim_velocity[1]; velocity[2] += aim_velocity[2]; } if( button & IN_BACK ) { velocity[0] -= aim_velocity[0]; velocity[1] -= aim_velocity[1]; velocity[2] -= aim_velocity[2]; } if( button & IN_MOVERIGHT ) { // angle velocity_aim -90 degrees //velocity[0] += ((floatcos(-90.0, degrees) * velocity_aim[0]) - (floatsin(-90.0, degrees) * velocity_aim[1])); // cos 90 = 0 sin -90 = -1 // (( 0 * velocity_aim[0] ) - ( -1 * velocity_aim[1] )) // velocity_aim[1] velocity[0] += aim_velocity[1]; //velocity[1] += ((floatsin(-90.0, degrees) * velocity_aim[0]) - (floatcos(-90.0, degrees) * velocity_aim[1])); // sin -90 = -1 cos -90 = 0 // (( -1 * velocity_aim[0] ) - ( 0 * velocity_aim[1] )) // -velocity_aim[0] velocity[1] -= aim_velocity[0]; } if( button & IN_MOVELEFT ) { // angle velocity_aim 90 degrees //velocity[0] += ((floatcos(90.0, degrees) * velocity_aim[0]) - (floatsin(90.0, degrees) * velocity_aim[1])); // cos 90 = 0 sin 90 = 1 // (( 0 * velocity_aim[0] ) - ( 1 * velocity_aim[1] )) // -velocity_aim[1] velocity[0] -= aim_velocity[1]; //velocity[1] += ((floatsin(90.0, degrees) * velocity_aim[0]) - (floatcos(90.0, degrees) * velocity_aim[1])); // sin 90 = 1 cos 90 = 0 // (( 1 * velocity_aim[0] ) - ( 0 * velocity_aim[1] )) // velocity_aim[0] velocity[1] += aim_velocity[0]; } set_pev(client, pev_velocity, velocity); }
// modified from kz_ljs_xm bool:is_user_ducking(client) { static Float:absmin[3], Float:absmax[3]; pev(client, pev_absmin, absmin); pev(client, pev_absmax, absmax); return ( (absmax[2] - absmin[2]) > 64.0 ); } http://forums.alliedmods.net/showthr....&page=3 http://forums.alliedmods.net/showpost.php?p=741450&postcount=26
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
Сообщение отредактировал Koka - Пятница, 27.03.2009, 06:55:20 |
|
| |
sonicsonedit | Дата: Пятница, 27.03.2009, 20:31:25 | Сообщение # 10 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Не в сети
| Koka Спасибо большое, помогло) Добавлено (2009-03-27, 7:57 Pm) --------------------------------------------- Не, не фига, не действует set_pev(id, pev_movetype, MOVETYPE_FLY). Даже в префинке. Короче похоже придётся set_pev(id, pev_gravity, 0.0001) использовать. Добавлено (2009-03-27, 8:31 Pm) --------------------------------------------- Ахренеть, теперь энтитя не хочет стукаться с другой энтитей. С полом стукается, говорит что стукнула пол. С ящиками на А и Б (даст2) стукается, говорит что стукнула func_breakable, а вот сквозь игроков пролетает, ппц Пойду ковырять плагин базуки, смотреть, как там. Простите за оффтоп.
Сообщение отредактировал sonicsonedit - Пятница, 27.03.2009, 20:32:41 |
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |