|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Как вычеслить прикосновление к teleport'у?
|
|
He_npeT | Дата: Понедельник, 02.07.2007, 00:11:26 | Сообщение # 1 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Как вычеслить прекоснодлён ли index к телепорту? Я пробывал слейдующий код, но никакого результата... Code static entname[33]; pev(pev(id, pev_groundentity), pev_classname, entname, 32); if(equal(entname, "trigger_teleport")) { ... }
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Понедельник, 02.07.2007, 00:36:46 |
|
| |
slogic | Дата: Понедельник, 02.07.2007, 13:40:14 | Сообщение # 2 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Code public plugin_init() { g_iMaxPlayers = global_get(glb_maxClients) register_forward(FM_Touch, "onTouch") }
public onTouch(pentTouched, pentOther) { if(pentTouched && pev_valid(pentTouched) && 1 <= pentOther <= g_iMaxPlayers) { static sClassname[18] pev(pentTouched, pev_classname, sClassname, sizeof(sClassname)-1) if(equal(sClassname, "trigger_teleport")) { log_amx("player[%d] touched teleport[%d]", pentOther, pentTouched) } }
return FMRES_IGNORED }
|
|
| |
He_npeT | Дата: Вторник, 03.07.2007, 14:30:23 | Сообщение # 3 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| А можно какнибудь, если тот index NOT_SOLID, то-есть если set_pev(id, pev_solid, SOLID_NOT) было над ним проведено...
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Вторник, 03.07.2007, 14:30:51 |
|
| |
slogic | Дата: Вторник, 03.07.2007, 16:07:17 | Сообщение # 4 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Ну поставь всем объектам "trigger_teleport" SOLID_TRIGGER.
|
|
| |
He_npeT | Дата: Вторник, 03.07.2007, 16:34:26 | Сообщение # 5 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Как понять? Зделал над игроком это в общем.. P.S. После 3 минут hlds кидет error: "tigger is clipping list" и отключается.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Вторник, 03.07.2007, 17:45:31 |
|
| |
slogic | Дата: Вторник, 03.07.2007, 21:03:28 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| У самого объекта trigger_teleport выстави заченние атрибута solid в SOLID_TRIGGER во время его спавна (ВЕН в другом топике сказал, когда удалять, вот вместо удаления установи это свойство - только уже лучше в Post версии обработчика).
|
|
| |
He_npeT | Дата: Среда, 04.07.2007, 04:32:12 | Сообщение # 7 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| К сажелению я не на стоко опытен, чтобы работать с этими так называемыми атрибытами. =Р Мне удалость найти другой способ, но возникла беда со многоугольниками... Code public fm_startframe() { ... new player = id; new ent, Float:orig[3]; static classname[33]; pev(player, pev_origin, orig); while((ent = engfunc(EngFunc_FindEntityInSphere, ent, orig, 200.0)) != 0) { pev(ent, pev_classname, classname, 32); if(equali(classname, "trigger_teleport")) { if(_check_collision(player, ent)) { //client_print(player, print_chat, "[KZT] Testing if needed to teleport"); static entname[33]; pev(pev(player, pev_groundentity), pev_classname, entname, 32); if (pev(player, pev_flags)&FL_ONGROUND && !IsPlayerSolid(player) && !equal(entname, "func_door")) { fake_touch(ent, player); //client_print(player, print_chat, "[KZT] Teleported (fake) [normal]"); } else if (pev(player, pev_flags)&FL_INWATER && !IsPlayerSolid(player)) { fake_touch(ent, player); //client_print(player, print_chat, "[KZT] Teleported (fake) [water]"); } break; } } } ... }
stock _check_collision ( entity1, entity2 ) { // supplied with invalid entities if( !pev_valid(entity1) || !pev_valid(entity2) ) return 0;
// retrieve absolutes static Float:absmin1[3], Float:absmax1[3], Float:absmin2[3], Float:absmax2[3];
pev(entity1, pev_absmin, absmin1); pev(entity1, pev_absmax, absmax1); pev(entity2, pev_absmin, absmin2); pev(entity2, pev_absmax, absmax2);
// not in bounds if( absmin1[0] > absmax2[0] || absmin1[1] > absmax2[1] || absmin1[2] > absmax2[2] || absmax1[0] < absmin2[0] || absmax1[1] < absmin2[1] || absmax1[2] < absmin2[2] ) return 0;
return 1; }
IsPlayerSolid(id) { if(pev(id, pev_solid) == SOLID_BBOX) return 1;
return 0; } P.S. Извеняюсь за неприравнение.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 04.07.2007, 04:33:34 |
|
| |
| AMX Mod X Russian Community © 2006-2025 | |
|
| |