Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Anty Duck DeathRun


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Vakos

    Wszechwidzący

  • Użytkownik

Reputacja: 57
Pomocny

  • Postów:266
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Opolskie
Offline

Napisano 14.07.2019 21:37

#include
#include
#include

#define PLUGIN "Co mnie bedzie spychalo!"
#define VERSION "1.0"
#define AUTHOR "R3X"

new Float:gfSpawns[64][3], giSpawnsNum = 0;

new gcvarMaxDistance;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

gcvarMaxDistance = register_cvar("amx_push_maxdistance", "400.0");

new ent = -1;
while((ent = find_ent_by_class(ent, "info_player_start")))
{
entity_get_vector(ent, EV_VEC_origin, gfSpawns[giSpawnsNum++]);
}

}

public plugin_cfg()
{
setTrigPushSolid(SOLID_NOT);
}
public plugin_end()
{
setTrigPushSolid(SOLID_TRIGGER);
}

public plugin_unpause()
{
setTrigPushSolid(SOLID_NOT);
}
public plugin_pause()
{
setTrigPushSolid(SOLID_TRIGGER);
}


is_on_spawn(ent, Float:fMaxDistance)
{
new Float:fMins[3], Float:fOrigin[3];
entity_get_vector(ent, EV_VEC_absmin, fMins);
entity_get_vector(ent, EV_VEC_absmax, fOrigin);

fOrigin[0] = (fOrigin[0]+fMins[0])/2;
fOrigin[1] = (fOrigin[1]+fMins[1])/2;
fOrigin[2] = (fOrigin[2]+fMins[2])/2;

for(new i=0;i {
if(get_distance_f(fOrigin, gfSpawns[i]) < fMaxDistance)
{
return 1;
}
}
return 0;
}

setTrigPushSolid(solid)
{
new Float:fDistance = get_pcvar_float(gcvarMaxDistance);

new ent = -1;
while((ent = find_ent_by_class(ent, "trigger_push")))
{
if(is_on_spawn(ent, fDistance))
entity_set_int(ent, EV_INT_solid, solid);
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
 

 

 

Plugin nie do końca działa tak jak powinien

 

Autor umieścił takiego enta:

while((ent = find_ent_by_class(ent, "trigger_push"))){

Który nie pozbywa się tego "trigger_push" który spycha z respa.

Niektóre mapy zamiast tego trigger_push używają "func_conveyor".

Po dodaniu:

while((ent = find_ent_by_class(ent, "func_conveyor")))

func_conveyor (nasze spychanie) usuwa.

Tutaj rodzi się pytanie dlaczego nie usuwa "trigger_push?


Użytkownik Vakos edytował ten post 14.07.2019 21:38

  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 14.07.2019 22:20

new ent = -1;
while((ent = find_ent_by_class(ent, "trigger_push")))
{
if(is_on_spawn(ent, fDistance))
entity_set_int(ent, EV_INT_solid, solid);
}
}

pomijając fakt, że kod wygląda jak kupa....

 

 

sprawdzałes czy wchodzi do tego ifa? jakiś log_amx do środka i sprawdz


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych