AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Weird Origin Problem (https://forums.alliedmods.net/showthread.php?t=48457)

The Specialist 12-12-2006 05:03

Weird Origin Problem
 
I dont know what the problem here is , it is supposed to get the nade origins then add effects and sprites. But the origin is extremly messed up and picks a random place on a map and does the effects , and no effects are dont to my nades .Thanks for the help
Code:
#include <amxmodx> #include <fakemeta_util> new g_Switch; new g_Mode[8]; new g_Fire; new g_HE_Fx; new g_SG_Fx; new g_FB_Fx; new g_FireWorks; new g_Smoke; new Lightning; public plugin_init() {  register_plugin("He Effects","0.1","The Specialist");  g_Switch = register_cvar("he_switch","1");  g_HE_Fx = register_cvar("he_fx","a");  g_SG_Fx = register_cvar("sg_fx","a");  g_FB_Fx = register_cvar("fb_fx","a");  register_forward(FM_PlayerPreThink,"GrenadeEffects"); } public GrenadeEffects(id) {  if(get_pcvar_num(g_Switch))  {   new HE = fm_find_ent_by_model(-1,"grenade","w_hegrenade.mdl");   new HE_Origin[3];   new HE_Owner = pev(HE,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_HE_Fx,g_Mode,7);     pev(HE,pev_origin,HE_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(HE)    write_short(g_Fire)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(HE)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_SMOKE);    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_ELIGHT);    write_short(HE);    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(TE_BEAMENTS);    write_short(HE_Owner);    write_short(HE);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(TE_SPARKS)    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    message_end();   }  }  FlashEffects(id); } public FlashEffects(id) {  if(get_pcvar_num(g_Switch))  {   new FB = fm_find_ent_by_model(-1,"grenade","w_flashbang.mdl");   new FB_Origin[3];   new FB_Owner = pev(FB,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_FB_Fx,g_Mode,7);     pev(FB,pev_origin,FB_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(FB)    write_short(g_Fire)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(FB)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_SMOKE);    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_ELIGHT);    write_short(FB);    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(TE_BEAMENTS);    write_short(FB_Owner);    write_short(FB);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(TE_SPARKS)    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    message_end();   }  }  SmokeEffects(id);  return; } public SmokeEffects(id) {  if(get_pcvar_num(g_Switch))  {   new SG = fm_find_ent_by_model(-1,"grenade","w_smokegrenade.mdl");   new SG_Origin[3];   new SG_Owner = pev(SG,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_SG_Fx,g_Mode,7);     pev(SG,pev_origin,SG_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(SG)    write_short(g_Fire)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_BEAMFOLLOW)    write_short(SG)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_SMOKE);    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(TE_ELIGHT);    write_short(SG);    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(TE_BEAMENTS);    write_short(SG_Owner);    write_short(SG);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(TE_SPARKS)    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    message_end();   }  }  return 0; } public plugin_precache() {  g_FireWorks = precache_model("sprites/fireworkbest.spr");  g_Fire = precache_model("sprites/flame.spr");  g_Smoke = precache_model("sprites/steam1.spr");  Lightning = precache_model("sprites/lgtning.spr"); }

jim_yang 12-12-2006 05:10

Re: Weird Origin Problem
 
why do you use FM_PlayerPreThink forward ?

dutchmeat 12-12-2006 05:14

Re: Weird Origin Problem
 
First of all, where did you defined all the temp effects,
and why don't you use the normal write_coord?
And you should use prethink for that.

message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);
write_byte(TE_SMOKE);
write_coord(HE_Origin[0]);
write_coord(HE_Origin[1]);
write_coord(HE_Origin[2]);
write_short(g_Smoke);
write_byte(255);
write_byte(0);
message_end();

The Specialist 12-12-2006 05:15

Re: Weird Origin Problem
 
Wel I needed some way to check for thrown grenades at all time using fakemeta . Is there a better way ?

OFF TOPIC : Hello Jim :)

Fakemta doesnt have a prethink only playerprethink or playerposthink.
and when usuing fakemta you should use the engfunc version of write coord. :wink:

dutchmeat 12-12-2006 06:12

Re: Weird Origin Problem
 
damn fakemeta junkies, ehmm...

Float!
Code:
  new Float:origin[3];   pev(id, pev_origin, origin);

jim_yang 12-12-2006 07:09

Re: Weird Origin Problem
 
try FM_SetModel forward, or forward grenade_throw(id, grenadeid, wpid) of <csx>

dutchmeat 12-12-2006 08:15

Re: Weird Origin Problem
 
Like i said, pev(id, pev_origin should be a float.

VEN 12-12-2006 11:18

Re: Weird Origin Problem
 
Me and P34nut already said you that origin is a float vector and even showed how to retrieve it. Also WriteCoord accepts a float value.

The Specialist 12-12-2006 16:34

Re: Weird Origin Problem
 
Hmmm, this wont let me connect to my server . But theres no run time errors. Any ideas ? I changed the origins to floats .

Code:
#include <amxmodx> #include <fakemeta_util> new g_Switch; new g_Mode[8]; new g_Fire; new g_HE_Fx; new g_SG_Fx; new g_FB_Fx; new g_FireWorks; new g_Smoke; new Lightning; new Float:  SG_Origin[3]; new Float: HE_Origin[3]; new Float: FB_Origin[3]; public plugin_init() {  register_plugin("Advanced Nade Effects","0.1","The Specialist");  g_Switch = register_cvar("he_switch","1");  g_HE_Fx = register_cvar("he_fx","a");  g_SG_Fx = register_cvar("sg_fx","a");  g_FB_Fx = register_cvar("fb_fx","a");  register_forward(FM_PlayerPreThink,"HeNadeEffects"); } public  HeNadeEffects() {  if(get_pcvar_num(g_Switch))  {   new HE = fm_find_ent_by_model(-1,"grenade","w_hegrenade.mdl");     new HE_Owner = pev(HE,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_HE_Fx,g_Mode,7);   pev(HE,pev_origin,HE_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(HE)    write_short(g_Fire)    write_byte(10)    write_byte(10)    write_byte(250)    write_byte(250)    write_byte(250)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(HE)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(5);    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(28);    write_short(HE);    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(8);    write_short(HE_Owner);    write_short(HE);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(9)    engfunc(EngFunc_WriteCoord,HE_Origin[0]);    engfunc(EngFunc_WriteCoord,HE_Origin[1]);    engfunc(EngFunc_WriteCoord,HE_Origin[2]);    message_end();   }  }  FlashEffects(); } public FlashEffects() {  if(get_pcvar_num(g_Switch))  {   new FB = fm_find_ent_by_model(-1,"grenade","w_flashbang.mdl");     new FB_Owner = pev(FB,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_FB_Fx,g_Mode,7);   pev(FB,pev_origin,FB_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(FB)    write_short(g_Fire)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(FB)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(5);    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(28);    write_short(FB);    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(8);    write_short(FB_Owner);    write_short(FB);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(9)    engfunc(EngFunc_WriteCoord,FB_Origin[0]);    engfunc(EngFunc_WriteCoord,FB_Origin[1]);    engfunc(EngFunc_WriteCoord,FB_Origin[2]);    message_end();   }  }  SmokeEffects();  return; } public SmokeEffects() {  if(get_pcvar_num(g_Switch))  {   new SG = fm_find_ent_by_model(-1,"grenade","w_smokegrenade.mdl");     new SG_Owner = pev(SG,pev_owner);   new g_iMode = read_flags(g_Mode);   get_pcvar_string(g_SG_Fx,g_Mode,7);   pev(SG,pev_origin,SG_Origin);     if(g_iMode & 1 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(SG)    write_short(g_Fire)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 2 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(8)    write_short(SG)    write_short(g_FireWorks)    write_byte(10)    write_byte(2)    write_byte(0)    write_byte(0)    write_byte(0)    write_byte(250)    message_end();   }   if(g_iMode & 4 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(5);    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    write_short(g_Smoke);    write_byte(255);    write_byte(0);    message_end();   }   if(g_iMode & 8 )   {    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);    write_byte(28);    write_short(SG);    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    engfunc(EngFunc_WriteCoord,10);    write_byte(250);    write_byte(250);    write_byte(250);    write_byte(10);    write_coord(10);    message_end();   }   if(g_iMode & 16 )   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY)    write_byte(8);    write_short(SG_Owner);    write_short(SG);    write_short(Lightning);    write_byte(0)    write_byte(0);    write_byte(25);    write_byte(30);    write_byte(10);      write_byte(255);    write_byte(255);    write_byte(255)    write_byte(255);    write_byte(0);    message_end()   }   if( g_iMode & 32)   {    message_begin( MSG_BROADCAST, SVC_TEMPENTITY);    write_byte(9)    engfunc(EngFunc_WriteCoord,SG_Origin[0]);    engfunc(EngFunc_WriteCoord,SG_Origin[1]);    engfunc(EngFunc_WriteCoord,SG_Origin[2]);    message_end();   }  }  return 0; } public plugin_precache() {  g_FireWorks = precache_model("sprites/fireworkbest.spr");  g_Fire = precache_model("sprites/flame.spr");  g_Smoke = precache_model("sprites/steam1.spr");  Lightning = precache_model("sprites/lgtning.spr"); }

dutchmeat 12-12-2006 16:40

Re: Weird Origin Problem
 
maybe because of the 'return 0;'
in client_prethink (forwarded from public SmokeEffects)?

If this is not the case, you should try using one function at the time, so only HE for now...


All times are GMT -4. The time now is 06:52.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.