Chcę sprawdzić czy przy Graczu I znajdują się jacyś inni gracze w okolicy(tj 100 unitów). A jeśli tak i stoją przez jakiś czas w tej okolicy to wykonać jakąś funkcję na tym Graczu I.
Oraz drugi problem:
Czy da się zamiast normalnej śmierci tj < 1 hp zrobić coś innego, np przeciwnik nie ginie a np zapada się pod ziemię.
Tera git ?
Dodano 02 kwiecień 2011 - 00:03:
Może jakoś da radę zastosować find_sphere_class ? Proszę o pomoc bo bardzo mi to potrzebne
Dodano 02 kwiecień 2011 - 12:11:
Mam cos takiego:
public check( id )
{
new num, list[ 32 ], Float:dist = 250.0;
num = find_sphere_class( id, "player", dist+0.0, list, 32 );
new player;
for ( new i ; i < num ; i++ )
{
player = list[ i ];
if( !is_user_alive( player ) || get_user_team( player ) != get_user_team( id ) || gfFrost[id] == 0 )
{
continue;
}
set_task(5.0,"odmroz",id)
}
}
public odmroz(id)
{
gfFrost[id]=0;
set_user_health(id,100);
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
set_pev(id, pev_maxspeed, 250.0)
}Czemu niezaleznie gdzie sie kto znajduje po 5 sekundach ma unfreeze ? Tak jakby ten zasieg nie dzialal
Dodano 02 kwiecień 2011 - 21:09:
Dobra poradziłem sobie już, gdyby ktoś miał podobny problem:
W prethinku jakimś:
public fwPreThink(id){
if (!task_exists(id)){
set_task(1.0,"check",id);
}No i reszta skryptu:
public check( id )
{
if( !gfFrost[id] )
return PLUGIN_HANDLED;
new num, list[32], Float:dist = 250.0;
num = find_sphere_class( id, "player", dist, list, 32 );
new player;
for ( new i ; i < num ; i++ )
{
player = list[ i ];
if( !is_user_alive( player ) || get_user_team( player ) != get_user_team( id ) || id == player)
{
continue;
}
if (num == 2)
{
tuf[id]=tuf[id]+1;
}
else if(num >= 3)
{
tuf[id]=tuf[id]+1*(((num-1)/5)+1);
}
if (tuf[id] >= 7){
tuf[id]=0;
odmroz(id);
}
}
}
public odmroz(id)
{
gfFrost[id] = false;
set_user_health(id,100);
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
set_pev(id, pev_maxspeed, 250.0)
}Działą perfekcyjnie i tak jak chce


Dodatki SourceMod




Moja zawartość
Nie podano