Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int AIV_DAMAGEID = 90;
- var int Collide_Ptr;//Resetować przy inicie gry, oraz gdy jest >0 a broń jest schowana,
- /* Pfx & VFX
- //PFX
- INSTANCE PFX_SWORDDAMAGE_100 (C_ParticleFX)
- {
- ppsvalue = 40;
- ppsscalekeys_s = "1";
- ppsfps = 8;
- ppsislooping = 1;
- shptype_s = "LINE";
- shpfor_s = "object";
- shpoffsetvec_s = "0 70 0";
- shpdistribtype_s = "UNIFORM";
- shpdim_s = "100 1";
- shpmesh_s = "M_ARMOR_STTH_BOOTL.3DS";
- ShpMeshRender_B = 1;
- shpscalekeys_s = "1";
- shpscaleislooping = 0;
- shpscaleissmooth = 0;
- shpscalefps = 1;
- dirmode_s = "DIR";
- velavg = 0.00000005;//9.
- lsppartavg = 100;
- flygravity_s = "0 0 0";
- visname_s = "MSH_WEAPONTRAIL.3DS";
- visorientation_s = "VEL0";
- vistexisquadpoly = 0;
- vistexanifps = 0;
- vistexaniislooping = 0;
- vistexcolorstart_s = "0 0 0";
- vistexcolorend_s = "0 0 0";
- vissizestart_s = "1 1";
- vissizeendscale = 1;
- visalphafunc_s = "ADD";
- visalphastart = 0;
- lsppartvar =1;
- visalphaend = 0;
- velvar = 0.000000001;
- };
- //VFX
- INSTANCE SWORDDAMAGE_PTR (CFx_Base)
- {
- visName_S = "PFX_SWORDDAMAGE_100";
- emTrjOriginNode = "ZS_RIGHTHAND";
- emTrjTargetNode = "";
- emTrjTargetRange = 0;
- emTrjTargetAzi = 0;
- emTrjTargetElev = 0;
- emTrjNumKeys = 0;
- emTrjNumKeysVar = 0;
- emTrjAngleElevVar = 0;
- emTrjAngleHeadVar = 0;
- emTrjKeyDistVar = 0;
- emTrjEaseVel = 1000;
- emTrjDynUpdateTargetOnly= 0;
- emActionCollDyn_S = "COLLIDE";
- emActionCollStat_S = "";
- emFXCollStat_S = "";
- emFXCollDyn_S = "";
- emFXCollStatAlign_S = "";
- emFXCollDynAlign_S = "";
- emCheckCollision = 1;
- emInvestNextKeyDuration = 0;
- emFlyGravity = 0;
- emSelfRotVel_S = "0 0 0";
- lightPresetName = "";
- sfxID = "";
- sendAssessMagic = 0;
- secsPerDamage = -1;
- visalpha = 1;
- visalphablendfunc_s = "NONE";
- emtrjmode_s = "FIXED";
- emtrjloopmode_s = "LINEAR";
- emtrjeasefunc_s = "NONE";
- emFXCreatedOwnTrj = 1;
- emFXTriggerDelay = 0.02;
- emfxlifespan = -1;
- emadjustshptoorigin = 1;//1
- emTrjDynUpdateDelay = 200;
- };
- */
- /*
- Ikarus
- */
- func int oCNpc_GetPointer(var C_NPC slf)
- {
- if (!Hlp_IsValidNpc(slf)) {
- MEM_Error (ConcatStrings ("oCNpc_GetPointer: Invalid c_npc: ", IntToString (slf.id)));
- return 0;
- };
- MEM_ReinitParser();
- var c_npc hlp; var int ptr;
- hlp = Hlp_GetNpc(MEM_HELPER_INST);
- MEM_Helper = Hlp_GetNpc (hlp);
- Npc_SetTarget(hlp,slf);//self,other
- ptr = MEM_Helper.enemy;
- return ptr;
- };
- func int oCNpc_zCTreeSearchVFX(var c_npc npc, var string effect)
- {
- var int ptr; ptr = MEM_InstGetOffset(npc);
- ptr = MEM_ReadInt(ptr+36);
- ptr = MEM_ReadInt(ptr);
- ptr = MEM_ReadInt(ptr+4);
- if(ptr==0)
- {
- printdebug("ERROR!!!");
- };
- effect = ConcatStrings(effect, " VOB");
- var int label; var int val; var int first_ptr; var int previous;
- first_ptr = ptr;
- val = MEM_ReadInt(ptr+16);//data zCVobVFX?
- if(val)
- {
- if(MEM_ReadInt(val)==8585884)&&(Hlp_StrCmp(MEM_ReadString(val+16),effect))
- {
- return val;
- };
- };
- MEM_InitLabels();
- label = MEM_StackPos.position;
- if(previous)
- {
- ptr = MEM_ReadInt(ptr+12);//next
- }
- else
- {
- ptr = MEM_ReadInt(ptr+8);//next
- };
- if(ptr==0)
- {
- previous=true;
- ptr=first_ptr;
- MEM_StackPos.position = label;
- };
- val = MEM_ReadInt(ptr+16);//data zCVobVFX?
- if(val)
- {
- if(MEM_ReadInt(val)==8585884)&&(Hlp_StrCmp(MEM_ReadString(val+16),effect))
- {
- return val;
- }
- else if (first_ptr!=ptr)
- {
- MEM_StackPos.position = label;
- };
- }
- else
- {
- return 0;
- };
- };
- func int I_CheckCollision(var int npcptr)
- {
- var c_item item;
- item= Npc_GetReadiedWeapon(hero);
- var int npc_bbox_0;
- var int npc_bbox_1;
- var int npc_bbox_2;
- var int npc_bbox_3;
- var int npc_bbox_4;
- var int npc_bbox_5;
- var int HeroDamage_Hitpos1_X;
- var int HeroDamage_Hitpos1_Y;
- var int HeroDamage_Hitpos1_Z;
- var int HeroDamage_Hitpos2_X;
- var int HeroDamage_Hitpos2_Y;
- var int HeroDamage_Hitpos2_Z;
- var int ret_sum; var int npc_bbox_begin;
- var int nPtr; var int hlp;
- var int m11,var int m14;
- var int m21,var int m24;
- var int m31,var int m34;
- var int dist;
- m11 = MEM_ReadInt(Collide_Ptr+60);
- m14 = MEM_ReadInt(Collide_Ptr+72);
- m21 = MEM_ReadInt(Collide_Ptr+76);
- m24 = MEM_ReadInt(Collide_Ptr+88);
- m31 = MEM_ReadInt(Collide_Ptr+92);
- m34 = MEM_ReadInt(Collide_Ptr+104);
- dist = mkf(item.range);
- dist = negf(dist);//-Negate
- HeroDamage_Hitpos1_X = mulf(dist,m11);
- HeroDamage_Hitpos1_Y = mulf(dist,m21);
- HeroDamage_Hitpos1_Z = mulf(dist,m31);
- HeroDamage_Hitpos1_X = addf(HeroDamage_Hitpos1_X,m14);
- HeroDamage_Hitpos1_Y = addf(HeroDamage_Hitpos1_Y,m24);
- HeroDamage_Hitpos1_Z = addf(HeroDamage_Hitpos1_Z,m34);
- dist = divf(dist,mkf(2));//-N/2
- HeroDamage_Hitpos2_X = mulf(m11, dist);
- HeroDamage_Hitpos2_Y = mulf(m21, dist);
- HeroDamage_Hitpos2_Z = mulf(m31, dist);
- HeroDamage_Hitpos2_X = addf(HeroDamage_Hitpos2_X,m14);
- HeroDamage_Hitpos2_Y = addf(HeroDamage_Hitpos2_Y,m24);
- HeroDamage_Hitpos2_Z = addf(HeroDamage_Hitpos2_Z,m34);
- //Ptr - to zcbob_boxes...
- npc_bbox_begin = ptr_npc + 124;
- npc_bbox_0=MEM_ReadInt(npc_bbox_begin);
- npc_bbox_1=MEM_ReadInt(npc_bbox_begin+4);
- npc_bbox_2=MEM_ReadInt(npc_bbox_begin+8);
- npc_bbox_3=MEM_ReadInt(npc_bbox_begin+12);
- npc_bbox_4=MEM_ReadInt(npc_bbox_begin+16);
- npc_bbox_5=MEM_ReadInt(npc_bbox_begin+20);
- ret_sum = 0; //reinit
- npc_bbox_4 = addf(npc_bbox_4,mkf(80));
- if(GF(npc_bbox_0,npc_bbox_3))
- {
- hlp = npc_bbox_0;
- npc_bbox_0 = npc_bbox_3;
- npc_bbox_3 = hlp;
- };
- if(GF(npc_bbox_1,npc_bbox_4))
- {
- hlp = npc_bbox_1;
- npc_bbox_1 = npc_bbox_4;
- npc_bbox_4 = hlp;
- };
- if(GF(npc_bbox_2,npc_bbox_5))
- {
- hlp = npc_bbox_2;
- npc_bbox_2 = npc_bbox_5;
- npc_bbox_5 = hlp;
- };
- if(LEF(npc_bbox_0,HeroDamage_Hitpos1_X))&&(LEF(HeroDamage_Hitpos1_X,npc_bbox_3))
- {
- ret_sum+=1;
- };
- if(LEF(npc_bbox_0,HeroDamage_Hitpos2_X))&&(LEF(HeroDamage_Hitpos2_X,npc_bbox_3))
- {
- ret_sum+=10;
- };
- //Nie ma sensu już dalej sprawdzać więc return :I
- if(!ret_sum)
- {
- return;
- };
- if(ret_sum%10==1)&&(LEF(npc_bbox_1,HeroDamage_Hitpos1_Y))&&(LEF(HeroDamage_Hitpos1_Y,npc_bbox_4))
- {
- ret_sum+=1;
- };
- if(ret_sum/10>=1)&&(LEF(npc_bbox_1,HeroDamage_Hitpos2_Y))&&(LEF(HeroDamage_Hitpos2_Y,npc_bbox_4))
- {
- ret_sum+=10;
- };
- if(ret_sum%10==2)&&(LEF(npc_bbox_2,HeroDamage_Hitpos1_Z))&&(LEF(HeroDamage_Hitpos1_Z,npc_bbox_5))
- {
- ret_sum+=1;
- };
- if(ret_sum/10>=2)&&(LEF(npc_bbox_2,HeroDamage_Hitpos2_Z))&&(LEF(HeroDamage_Hitpos2_Z,npc_bbox_5))
- {
- ret_sum+=10;
- };
- //Add aivar - Debugg
- if(ret_sum/10>=3)||(ret_sum%10==3)
- {
- //Set New Aiviar
- nPtr = ptr_npc+648;
- nPtr = nPtr + AIV_DAMAGEID*4;
- hlp = MEM_ReadInt(nPtr);
- MEM_WriteInt(nPtr,hlp);
- };
- if(ret_sum)
- {
- return true;
- };
- };
- func int CheckCollideToNpc(var c_npc npc) // npc z voblisty
- {
- if(I_CheckCollision(oCNpc_GetPointer(npc)))
- {
- return TRUE;
- Print("Kolizja !");
- };
- };
- func void Init_Ptr()//FF_apply
- {
- if(Npc_HasReadiedMeleeWeapon(hero))
- {
- if(!Collide_Ptr)
- {
- Wld_PlayEffect("SWORDDAMAGE_PTR", hero, hero, 0, 0, DAM_INVALID, FALSE);
- Collide_Ptr = I_zCTreeSearchVFX(hero,"SWORDDAMAGE_PTR");
- };
- }
- else if(!Npc_HasReadiedMeleeWeapon(hero))
- {
- if(Collide_Ptr)
- {
- Collide_Ptr = 0;
- };
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment