Guest User

Untitled

a guest
Sep 27th, 2016
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.79 KB | None | 0 0
  1. const int AIV_DAMAGEID = 90;
  2. var int Collide_Ptr;//Resetować przy inicie gry, oraz gdy jest >0 a broń jest schowana,
  3. /* Pfx & VFX
  4. //PFX
  5.  
  6. INSTANCE PFX_SWORDDAMAGE_100 (C_ParticleFX)
  7. {
  8.     ppsvalue            = 40;
  9.     ppsscalekeys_s      = "1";
  10.     ppsfps              = 8;
  11.     ppsislooping        = 1;
  12.     shptype_s           = "LINE";
  13.     shpfor_s            = "object";
  14.     shpoffsetvec_s      = "0 70 0";
  15.     shpdistribtype_s    = "UNIFORM";
  16.     shpdim_s            = "100 1";
  17.     shpmesh_s           = "M_ARMOR_STTH_BOOTL.3DS";
  18.     ShpMeshRender_B     = 1;    
  19.     shpscalekeys_s      = "1";
  20.     shpscaleislooping   = 0;
  21.     shpscaleissmooth    = 0;
  22.     shpscalefps         = 1;
  23.     dirmode_s           = "DIR";
  24.     velavg              = 0.00000005;//9.
  25.     lsppartavg          = 100;
  26.     flygravity_s        = "0 0 0";
  27.     visname_s           = "MSH_WEAPONTRAIL.3DS";
  28.     visorientation_s    = "VEL0";
  29.     vistexisquadpoly    = 0;
  30.     vistexanifps        = 0;
  31.     vistexaniislooping  = 0;
  32.     vistexcolorstart_s  = "0 0 0";
  33.     vistexcolorend_s    = "0 0 0";
  34.     vissizestart_s      = "1 1";
  35.     vissizeendscale     = 1;
  36.     visalphafunc_s      = "ADD";
  37.     visalphastart       = 0;
  38.     lsppartvar      =1;
  39.     visalphaend         = 0;
  40.     velvar          = 0.000000001;
  41. };
  42.  
  43. //VFX
  44. INSTANCE SWORDDAMAGE_PTR    (CFx_Base)
  45. {
  46.     visName_S                   = "PFX_SWORDDAMAGE_100";
  47.     emTrjOriginNode         = "ZS_RIGHTHAND";
  48.     emTrjTargetNode         = "";
  49.     emTrjTargetRange        = 0;
  50.     emTrjTargetAzi              = 0;
  51.     emTrjTargetElev         = 0;
  52.     emTrjNumKeys                = 0;
  53.     emTrjNumKeysVar     = 0;
  54.     emTrjAngleElevVar       = 0;
  55.     emTrjAngleHeadVar       = 0;
  56.     emTrjKeyDistVar         = 0;
  57.     emTrjEaseVel                = 1000;
  58.     emTrjDynUpdateTargetOnly= 0;
  59.     emActionCollDyn_S       = "COLLIDE";       
  60.     emActionCollStat_S      = "";      
  61.     emFXCollStat_S          = "";
  62.     emFXCollDyn_S           = "";
  63.     emFXCollStatAlign_S     = "";      
  64.     emFXCollDynAlign_S      = "";
  65.     emCheckCollision            = 1;
  66.     emInvestNextKeyDuration     = 0;
  67.     emFlyGravity                = 0;
  68.     emSelfRotVel_S          = "0 0 0";
  69.     lightPresetName         = "";
  70.     sfxID                           = "";
  71.     sendAssessMagic         = 0;
  72.     secsPerDamage           = -1;  
  73.    
  74.     visalpha                        = 1;
  75.     visalphablendfunc_s         = "NONE";
  76.     emtrjmode_s                 = "FIXED";    
  77.     emtrjloopmode_s         = "LINEAR";  
  78.     emtrjeasefunc_s             =        "NONE";
  79.     emFXCreatedOwnTrj   = 1;   
  80.     emFXTriggerDelay            = 0.02;
  81.     emfxlifespan                = -1;  
  82.     emadjustshptoorigin     = 1;//1
  83.     emTrjDynUpdateDelay = 200; 
  84. };
  85. */
  86. /*
  87. Ikarus
  88. */
  89.  
  90. func int oCNpc_GetPointer(var C_NPC slf)
  91. {
  92.     if (!Hlp_IsValidNpc(slf))  {
  93.     MEM_Error (ConcatStrings ("oCNpc_GetPointer: Invalid c_npc: ", IntToString (slf.id)));
  94.     return 0;
  95.     }; 
  96.     MEM_ReinitParser();
  97.     var c_npc hlp; var int ptr;
  98.     hlp = Hlp_GetNpc(MEM_HELPER_INST);
  99.     MEM_Helper = Hlp_GetNpc (hlp);
  100.     Npc_SetTarget(hlp,slf);//self,other
  101.     ptr = MEM_Helper.enemy;
  102.  
  103.     return ptr;
  104.            
  105. };
  106.  
  107. func int oCNpc_zCTreeSearchVFX(var c_npc npc, var string effect)
  108. {
  109.     var int ptr; ptr = MEM_InstGetOffset(npc);
  110.     ptr = MEM_ReadInt(ptr+36);
  111.     ptr = MEM_ReadInt(ptr);
  112.     ptr = MEM_ReadInt(ptr+4);
  113.    
  114.     if(ptr==0)
  115.     {
  116.     printdebug("ERROR!!!");
  117.     };
  118.     effect = ConcatStrings(effect, " VOB");
  119.    
  120.     var int label; var int val; var int first_ptr; var int previous;
  121.    
  122.     first_ptr = ptr;
  123.     val = MEM_ReadInt(ptr+16);//data zCVobVFX?
  124.     if(val)
  125.     {
  126.         if(MEM_ReadInt(val)==8585884)&&(Hlp_StrCmp(MEM_ReadString(val+16),effect))
  127.         {
  128.             return val;            
  129.         };
  130.     };
  131.    
  132.     MEM_InitLabels();
  133.     label = MEM_StackPos.position;  
  134.     if(previous)
  135.     {
  136.         ptr = MEM_ReadInt(ptr+12);//next              
  137.     }
  138.     else
  139.     {
  140.         ptr = MEM_ReadInt(ptr+8);//next
  141.     };
  142.     if(ptr==0)
  143.     {
  144.         previous=true;
  145.         ptr=first_ptr;
  146.         MEM_StackPos.position = label;
  147.     };
  148.     val = MEM_ReadInt(ptr+16);//data zCVobVFX?
  149.     if(val)
  150.     {
  151.         if(MEM_ReadInt(val)==8585884)&&(Hlp_StrCmp(MEM_ReadString(val+16),effect))
  152.         {
  153.             return val;            
  154.         }
  155.         else if (first_ptr!=ptr)
  156.         {
  157.             MEM_StackPos.position = label;  
  158.         };
  159.     }
  160.     else
  161.     {
  162.     return 0;
  163.     };
  164.  
  165. };
  166.  
  167.  
  168. func int I_CheckCollision(var int npcptr)
  169. {
  170.     var c_item item;
  171.     item= Npc_GetReadiedWeapon(hero);
  172.    
  173.     var int npc_bbox_0;
  174.     var int npc_bbox_1;
  175.     var int npc_bbox_2;
  176.     var int npc_bbox_3;
  177.     var int npc_bbox_4;
  178.     var int npc_bbox_5;
  179.    
  180.     var int HeroDamage_Hitpos1_X;
  181.     var int HeroDamage_Hitpos1_Y;
  182.     var int HeroDamage_Hitpos1_Z;
  183.    
  184.     var int HeroDamage_Hitpos2_X;
  185.     var int HeroDamage_Hitpos2_Y;
  186.     var int HeroDamage_Hitpos2_Z;
  187.    
  188.    
  189.     var int ret_sum; var int npc_bbox_begin;
  190.    
  191.     var int nPtr; var int hlp;
  192.     var int m11,var int m14;
  193.     var int m21,var int m24;
  194.     var int m31,var int m34;
  195.     var int dist;
  196.  
  197.     m11 =  MEM_ReadInt(Collide_Ptr+60);
  198.     m14 =  MEM_ReadInt(Collide_Ptr+72);
  199.    
  200.     m21 =  MEM_ReadInt(Collide_Ptr+76);
  201.     m24 =  MEM_ReadInt(Collide_Ptr+88);
  202.    
  203.     m31 =  MEM_ReadInt(Collide_Ptr+92);
  204.     m34 =  MEM_ReadInt(Collide_Ptr+104);  
  205.    
  206.     dist = mkf(item.range);
  207.     dist = negf(dist);//-Negate
  208.    
  209.  
  210.    
  211.     HeroDamage_Hitpos1_X = mulf(dist,m11);
  212.     HeroDamage_Hitpos1_Y = mulf(dist,m21);
  213.     HeroDamage_Hitpos1_Z = mulf(dist,m31);
  214.    
  215.     HeroDamage_Hitpos1_X = addf(HeroDamage_Hitpos1_X,m14);
  216.     HeroDamage_Hitpos1_Y = addf(HeroDamage_Hitpos1_Y,m24);
  217.     HeroDamage_Hitpos1_Z = addf(HeroDamage_Hitpos1_Z,m34);
  218.    
  219.    
  220.     dist = divf(dist,mkf(2));//-N/2
  221.    
  222.     HeroDamage_Hitpos2_X = mulf(m11, dist);
  223.     HeroDamage_Hitpos2_Y = mulf(m21, dist);
  224.     HeroDamage_Hitpos2_Z = mulf(m31, dist);
  225.    
  226.     HeroDamage_Hitpos2_X = addf(HeroDamage_Hitpos2_X,m14);
  227.     HeroDamage_Hitpos2_Y = addf(HeroDamage_Hitpos2_Y,m24);
  228.     HeroDamage_Hitpos2_Z = addf(HeroDamage_Hitpos2_Z,m34);      
  229.  
  230.     //Ptr - to zcbob_boxes...
  231.     npc_bbox_begin = ptr_npc + 124;
  232.     npc_bbox_0=MEM_ReadInt(npc_bbox_begin);
  233.     npc_bbox_1=MEM_ReadInt(npc_bbox_begin+4);
  234.     npc_bbox_2=MEM_ReadInt(npc_bbox_begin+8);
  235.     npc_bbox_3=MEM_ReadInt(npc_bbox_begin+12);
  236.     npc_bbox_4=MEM_ReadInt(npc_bbox_begin+16);
  237.     npc_bbox_5=MEM_ReadInt(npc_bbox_begin+20);
  238.    
  239.     ret_sum = 0; //reinit
  240.     npc_bbox_4 = addf(npc_bbox_4,mkf(80));  
  241.    
  242.     if(GF(npc_bbox_0,npc_bbox_3))
  243.     {
  244.         hlp = npc_bbox_0;
  245.         npc_bbox_0 = npc_bbox_3;
  246.         npc_bbox_3 = hlp;
  247.     };    
  248.     if(GF(npc_bbox_1,npc_bbox_4))
  249.     {
  250.         hlp = npc_bbox_1;
  251.         npc_bbox_1 = npc_bbox_4;
  252.         npc_bbox_4 = hlp;
  253.     };
  254.     if(GF(npc_bbox_2,npc_bbox_5))
  255.     {
  256.         hlp = npc_bbox_2;
  257.         npc_bbox_2 = npc_bbox_5;
  258.         npc_bbox_5 = hlp;
  259.     };
  260.  
  261.        
  262.         if(LEF(npc_bbox_0,HeroDamage_Hitpos1_X))&&(LEF(HeroDamage_Hitpos1_X,npc_bbox_3))
  263.         {
  264.             ret_sum+=1;    
  265.         };    
  266.         if(LEF(npc_bbox_0,HeroDamage_Hitpos2_X))&&(LEF(HeroDamage_Hitpos2_X,npc_bbox_3))
  267.         {
  268.             ret_sum+=10;  
  269.         };  
  270.  
  271.         //Nie ma sensu już dalej sprawdzać więc return :I
  272.         if(!ret_sum)
  273.         {
  274.         return;
  275.         };
  276.        
  277.         if(ret_sum%10==1)&&(LEF(npc_bbox_1,HeroDamage_Hitpos1_Y))&&(LEF(HeroDamage_Hitpos1_Y,npc_bbox_4))
  278.         {      
  279.             ret_sum+=1;    
  280.         };      
  281.         if(ret_sum/10>=1)&&(LEF(npc_bbox_1,HeroDamage_Hitpos2_Y))&&(LEF(HeroDamage_Hitpos2_Y,npc_bbox_4))
  282.         {              
  283.             ret_sum+=10;  
  284.         };      
  285.  
  286.         if(ret_sum%10==2)&&(LEF(npc_bbox_2,HeroDamage_Hitpos1_Z))&&(LEF(HeroDamage_Hitpos1_Z,npc_bbox_5))
  287.         {      
  288.             ret_sum+=1;    
  289.         };
  290.         if(ret_sum/10>=2)&&(LEF(npc_bbox_2,HeroDamage_Hitpos2_Z))&&(LEF(HeroDamage_Hitpos2_Z,npc_bbox_5))
  291.         {      
  292.             ret_sum+=10;  
  293.         };            
  294.         //Add aivar - Debugg
  295.         if(ret_sum/10>=3)||(ret_sum%10==3)
  296.         {
  297.             //Set New Aiviar
  298.             nPtr = ptr_npc+648;
  299.             nPtr = nPtr + AIV_DAMAGEID*4;  
  300.             hlp = MEM_ReadInt(nPtr);
  301.             MEM_WriteInt(nPtr,hlp);
  302.         };
  303.        
  304.    
  305.             if(ret_sum)
  306.             {
  307.             return true;
  308.             };
  309. };
  310.  
  311. func int CheckCollideToNpc(var c_npc npc) // npc z voblisty
  312. {
  313.     if(I_CheckCollision(oCNpc_GetPointer(npc)))
  314.     {
  315.         return TRUE;
  316.         Print("Kolizja !");
  317.     };
  318. };
  319.  
  320. func void Init_Ptr()//FF_apply
  321. {
  322.  
  323.     if(Npc_HasReadiedMeleeWeapon(hero))
  324.     {
  325.         if(!Collide_Ptr)
  326.         {
  327.             Wld_PlayEffect("SWORDDAMAGE_PTR", hero, hero, 0, 0, DAM_INVALID, FALSE);
  328.             Collide_Ptr = I_zCTreeSearchVFX(hero,"SWORDDAMAGE_PTR");   
  329.         };
  330.     }
  331.     else if(!Npc_HasReadiedMeleeWeapon(hero))
  332.     {
  333.         if(Collide_Ptr)
  334.         {
  335.         Collide_Ptr = 0;
  336.         };
  337.     };
  338. };
Advertisement
Add Comment
Please, Sign In to add comment