Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Goth77

Pages: [1] 2 3 4 5 6 ... 292
1
Okay so after further testing, here is a crude example of how to achieve the effect you are looking for. Again, you will need to modify this code to suit your weapons image names and the timings and such, but functionality wise this seems to work perfectly.

Code: [Select]
datablock ShapeBaseImageData(spearImage)
{
   shapeFile = "./gun.dts";
   emap = true;
   mountPoint = 0;
   offset = "0 0 0";
   correctMuzzleVector = true;
   className = "WeaponImage";
   item = spearItem;
   ammo = " ";
   projectile = spearProjectile;
   projectileType = Projectile;
   melee = false;
   armReady = true;
   doColorShift = true;
   colorShiftColor = "0.400 0.196 0 1.000";
   // Initial start up state
stateName[0] = "Activate";
stateTimeoutValue[0] = 0.1;
stateTransitionOnTimeout[0] = "Ready";
stateSequence[0] = "ready";
stateSound[0] = weaponSwitchSound;

stateName[1] = "Ready";
stateTransitionOnTriggerDown[1] = "Charge";
stateAllowImageChange[1] = true;

stateName[2]                    = "Charge";
stateTransitionOnTimeout[2] = "Armed";
stateTimeoutValue[2]            = 0.7;
stateWaitForTimeout[2] = false;
stateTransitionOnTriggerUp[2] = "AbortCharge";
stateScript[2]                  = "onCharge";
stateAllowImageChange[2]        = false;
stateEmitter[2] = gunFlashEmitter;
stateSound[2] = bigBangChargeSound;
stateEmitterTime[2] = 0.7;
stateEmitterNode[2] = "muzzleNode";

stateName[3] = "AbortCharge";
stateTransitionOnTimeout[3] = "Ready";
stateTimeoutValue[3] = 0.3;
stateWaitForTimeout[3] = true;
stateScript[3] = "onAbortCharge";
stateAllowImageChange[3] = false;
//stateEmitter[3] = gunSmokeEmitter; - we don't need this since we are swapping images during this image states script callback
stateSound[3] = rocketFireSound;
stateEmitterTime[3] = 0.3;
stateEmitterNode[3] = "muzzleNode";

stateName[4] = "Armed";
stateTransitionOnTimeout[4] = "Armed";
stateTransitionOnTriggerUp[4] = "Fire";
stateAllowImageChange[4] = false;
stateEmitter[4] = gunFlashEmitter;
stateSound[4] = bigBangChargeFullSound; //this sfx will keep looping until release fire, probably want a different sound for this than initial charge sound
stateEmitterTime[4] = 0.2;
stateEmitterNode[4] = "muzzleNode";

stateName[5] = "Fire";
stateTransitionOnTimeout[5] = "Ready";
stateTimeoutValue[5] = 0.5;
stateFire[5] = true;
stateSequence[5] = "fire";
stateScript[5] = "onFire";
stateWaitForTimeout[5] = true;
stateAllowImageChange[5] = false;
stateEmitter[5] = gunFlashEmitter;
stateEmitterTime[5] = 0.05;
stateEmitterNode[5] = "muzzleNode";
stateSound[5] = noTimeFireSound;
};

datablock ShapeBaseImageData(AbortSmokeImage)
{
   // Basic Item properties
   shapeFile = "./gun.dts";
   emap = true;
   mountPoint = 0;
   offset = "0 0 0";
   correctMuzzleVector = true;
   className = "WeaponImage";
   // Projectile && Ammo.
   item = spearItem;
   ammo = " ";
   projectile = spearProjectile;
   projectileType = Projectile;
   melee = false;
   armReady = true;
   doColorShift = true;
   colorShiftColor = "0.400 0.196 0 1.000";
   // Initial start up state
stateName[0] = "Activate";
stateTimeoutValue[0] = 0.3;
stateTransitionOnTimeout[0] = "Done";
stateEmitter[0] = gunSmokeEmitter;
stateEmitterTime[0] = 0.3;
stateEmitterNode[0] = "muzzleNode";

stateName[1] = "Done";
stateTimeoutValue[1]    = 0.1;
stateScript[1]                  = "onDone";
};

function spearImage::onCharge(%this, %obj, %slot)
{
%obj.playthread(2, spearReady);
}

function spearImage::onAbortCharge(%this, %obj, %slot)
{
%obj.playthread(2, root);
//Swap to abort smoke image
%obj.mountImage(AbortSmokeImage,0);
}

function spearImage::onFire(%this, %obj, %slot)
{
%obj.playthread(2, spearThrow);
Parent::onFire(%this, %obj, %slot);
}

function AbortSmokeImage::onDone(%this, %obj, %slot)
{
//Swap back to original weapon
%obj.mountImage(SpearImage,0);
}

During the abort sequence, the weapon image changes to a duplicate image with only a smoking image state, and at the end of the abort images life, it swaps back to the original weapon image. This effectively (and deceptively, I might add) solves the emitter overlap issue.

2
I mean technically you are releasing the charge early when you don't keep click held down through the duration of the charge state, but I think I understand what you mean. What you could try is making your weapon function more like the spear where you hold click down during the entirety of the charge until it reaches a "fully charged" state. Here is an example I wrote up for you:

Code: [Select]
stateName[0] = "Activate";
stateTimeoutValue[0] = 0.1;
stateTransitionOnTimeout[0] = "Ready";
stateSequence[0] = "ready";
stateSound[0] = weaponSwitchSound;

stateName[1] = "Ready";
stateTransitionOnTriggerDown[1] = "Charge";
stateAllowImageChange[1] = true;

stateName[2]                    = "Charge";
stateTransitionOnTimeout[2] = "Armed";
stateTimeoutValue[2]            = 0.7;
stateWaitForTimeout[2] = false;
stateTransitionOnTriggerUp[2] = "AbortCharge";
stateScript[2]                  = "onCharge";
stateAllowImageChange[2]        = false;

stateName[3] = "AbortCharge";
stateTransitionOnTimeout[3] = "Ready";
stateTimeoutValue[3] = 0.3;
stateWaitForTimeout[3] = true;
stateScript[3] = "onAbortCharge";
stateAllowImageChange[3] = false;
stateEmitter[3] = rocketLauncherSmokeEmitter;
stateSound[3] = rocketFireSound;
stateEmitterTime[3] = 0.3;
stateEmitterNode[3] = "muzzleNode";

stateName[4] = "Armed";
stateTransitionOnTriggerUp[4] = "Fire";
stateAllowImageChange[4] = false;
stateEmitter[4] = bigBangChargeEmitter;
stateSound[4] = bigBangChargeSound;
stateEmitterTime[4] = 0.2;
stateEmitterNode[4] = "muzzleNode";

stateName[5] = "Fire";
stateTransitionOnTimeout[5] = "Ready";
stateTimeoutValue[5] = 0.5;
stateFire[5] = true;
stateSequence[5] = "fire";
stateScript[5] = "onFire";
stateWaitForTimeout[5] = true;
stateAllowImageChange[5] = false;
stateEmitter[5] = staticBeamFlashEmitter;
stateEmitterTime[5] = 0.05;
stateEmitterNode[5] = "muzzleNode";
stateSound[5] = noTimeFireSound;

I added your custom sfx and emitters into this code, but you'll probably want to adjust the timeout values and script callbacks since those are the same as the default spear. Let me know how it goes.

EDIT: as far as I'm aware there isn't a way to prematurely cancel an emitter on a weapon using the change state system by itself in this manner. the emitter will always finish until the emitter timeout. what you would do is use a script callback and mount an image to the player's muzzle node during the charge state (the charging emitter) and in the abort script callback you would delete said image then play the smoke emitter


3
fixed. sorry I overlooked it the first time around. thanks for posting the full image code I was able to test it much easier.

Code: [Select]
stateWaitForTimeout[5] = true;


4
no, they are actually overlapping, the charge particle has a very short lifetime so any overlap caused in the way you described would be minuscule
i tested it with the added delay state and the emitter will still continue through that and into the smoke state and onward
I see. post the entire image state code plz

5
Add-Ons / Re: [Player] TouhouNew
« on: July 03, 2024, 02:18:56 PM »
awesome

6
in your example what is happening is that you are going from the charging state while holding click, then when you release click early it goes straight to the abort (smoke) state which is also creating an emitter. this would cause the appearance of both emitters happening in succession so quickly they may seem to overlap. you need to create a state in-between with no emitter that will be a delay before you swap to the image state with the next emitter.

Code: [Select]
stateName[3] = "Smoke";
stateTimeoutValue[3] = 0.4;
stateScript[3] = "onMisfire";
stateTransitionOnTimeout[3] = "Reload";
stateEmitter[3] = rocketLauncherSmokeEmitter;
stateEmitterTime[3] = 0.3;
stateEmitterNode[3] = "muzzleNode";
stateSound[3] = rocketFireSound;
stateWaitForTimeout[3] = true;

stateName[4] = "Delay";
stateTimeoutValue[4] = 0.4;
stateScript[4] = "onDelay";
stateTransitionOnTimeout[4] = "Smoke";
stateWaitForTimeout[4] = true;

stateName[5] = "Charge";
stateTimeoutValue[5] = 1.5;
stateScript[5] = "onBoltback";
stateTransitionOnTimeout[5] = "Fire";
stateTransitionOnTriggerUp[5] = "Delay";
stateEmitter[5] = bigBangChargeEmitter;
stateEmitterTime[5] = 1.35;
stateEmitterNode[5] = "muzzleNode";
stateSound[5] = bigBangChargeSound;
stateWaitForTimeout[5] = false;

in this example, onTriggerUp in the "Charge" image state will carry over to the "Delay" image state with no emitter, before going to the "Smoke" image state. Hope this helps, happy coding. :)


7
Add-Ons / Re: [Client] Age of Dungeons - HUD
« on: June 30, 2024, 08:19:40 PM »
nice work as always hologlaxer

8
Off Topic / Re: Biden/Annoying Orange Debate
« on: June 29, 2024, 08:11:00 AM »
clown show

9
Add-Ons / [Event] Toggle Bot Activation
« on: May 31, 2024, 05:08:20 AM »
Event - Toggle Bot Activation
Toggle a bot's ability to be triggered by onBotActivated events

Instead of using toggleEventEnabled to disable/enable all those onBotActivated events, this is a simpler solution.
Events are bot > toggleActivation [✔] or self/namedBrick > botToggleActivation [✔]

DOWNLOAD

10
Add-Ons / [Event] Bot Head Turn
« on: May 28, 2024, 04:18:36 PM »
Event - Bot Head Turn
Turn a bots head in a specific direction at a given speed

Originally by Darerd, this updated version adds an option to lock the head angle into place, preventing it from automatically resetting.
This version also adds an output event on the brick so you can do namedBrick > botHeadTurn

DOWNLOAD

11
the vending machine spits a tomato at you

i insert a grilled burrito

12
That is more precise, yes, but there are also a great deal of Christian Zionists here in the US who are applauding this genocide and claiming it as God's Will. (And some more extreme fanatics who believe that Jesus can't return unless Israel is allowed to complete these atrocities. I'm too tired to look up exact references on what the groups call themselves but something about Revelations or whatever.)

Anyways, I haven't been keeping as thorough a log of updates of the daily horrors the innocent civilians of Gaza face, but last night there was an utterly condemnable act wherein Israel dropped over 60 bombs onto a tent encampment in Gaza, an area known as Block 2371, host of a United Nations Relief Support Tent, where just four days ago, the IOF had told civilians they should evacuate to because it would be a designated safe area.
yeah, wow. that is just terrible.

It should be noted that Biden has said several times that there were "Red Lines" that Israel shouldn't cross if it didn't want the US to pull funding. Every single one of those lines have been crossed, and this newest horrific act has still not been enough to convince Biden that enough civilians have been needlessly slaughtered.
unfortunately his only expertise is sniffing people and talking about ice cream. don't expect he will do anything just whats been happening which is continuing to fund other countries wars while our own economy is in the stuff

13
Ok, but that could have been achieved by just saying "evil scum" or even inserting more specific language regarding the political ideologies at play here.

Imagine if this thread were also denouncing the active genocide also occurring in the Democratic Republic of the Congo, and you said the same thing but substituted "Jew" for "Black". You might have intended to specifically imply the forces fighting on behalf of Chinese and Western mining investment groups, but that is not at all what comes across from the specific words you chose to use.
okay u right, my language inclusivity was a bit too broad so let me narrow it down: evil jewish zionist extremist scum. hope that is better

14
my comment only applies to the ones who are spitting at & committing violence against innocent people

15
Israel is a tribal, Supremacist State:

https://youtu.be/5JzGzyaUnz0


Pages: [1] 2 3 4 5 6 ... 292