Animus
Steuerzahler

Dabei seit: 29.04.2008
Beiträge: 198

|
|
| Im Wasser Energieleiste (script+trigger) |
 |
also ich fang mal einfach an mein problem zu beschreiben:
iIn der MAP:
- hab ne insel als map und wollte das wasser begehbar machen (wenn der spieler unterwasser ist sollte energieleiste kommen funktioniert auch)
- hab aber ein trigger multi. problem (zuviele aneinander) läuft der spieler durch einen in den anderen wird das script neu gestartet das ist aber nicht unbedingt das problem hab schon eine lösung mir überlegt(denk ich)! nun hab ich damit ein problem das wenn ich öffter durch den trigger in einen anderen gehe irgendwann die energieleiste im wasser nicht mehr angezeigt wird und man nur noch stirbt wenn die zeit gekommen ist.
das script(verlinkt in der mp_mapname.gsc als seperate datei):
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
|
main()
{ drownage = getentarray("drown","targetname");
if (isDefined("drownage"))
{
precacheShader("black");
precacheShader("white"); level.barsize = 288;
level.drowntime = 8;
level.hurttime = 6; for(d = 0; d < drownage.size; d++)
{
drownage[d] thread water();
}
}
}Water()
{
while (1)
{ self waittill("trigger", other); if(isPlayer(other) && other istouching(self)) other thread drown(self);
}
}
drown(trigger)
{
dceiling = getent(trigger.target,"targetname");
water_vision = undefined;
while (self istouching(trigger) && !self istouching(dceiling))
{
wait .125;
if(isDefined(self.drowning))
return;
self.drowning = true; if(!isDefined(water_vision))
{
water_vision = newClientHudElem(self);
water_vision.x = 0;
water_vision.y = 0;
water_vision setshader ("white", 640, 480);
water_vision.alignX = "left";
water_vision.alignY = "top";
water_vision.horzAlign = "fullscreen";
water_vision.vertAlign = "fullscreen";
water_vision.color = (.16, .38, .5);
water_vision.alpha = .75;
}
level.barincrement = (level.barsize / (20.0 * level.drowntime));
// level.player allowProne(false);
if(!isDefined(self.progressbackground))
{
self.progressbackground = newClientHudElem(self); self.progressbackground.alignX = "center";
self.progressbackground.alignY = "middle";
self.progressbackground.x = 320;
self.progressbackground.y = 385;
self.progressbackground.alpha = 0.5;
}
self.progressbackground setShader("black", (level.barsize + 4), 14); if(!isDefined(self.progressbar))
{
self.progressbar = newClientHudElem(self);
self.progressbar.alignX = "left";
self.progressbar.alignY = "middle";
self.progressbar.x = (320 - (level.barsize / 2.0));
self.progressbar.y = 385;
}
self.progressbar setShader("white", 0, 8);
self.progressbar scaleOverTime(level.drowntime, level.barsize, 8); self.progresstime = 0;
d = 0;
f = 0; while(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime < level.drowntime))
{
d ++;
f ++;
wait 0.05;
self.progresstime += 0.05;
if(self.progresstime >= level.hurttime)
{
if(f >= 4)
{
radiusDamage(self.origin,9, 1, 1); f = 0;
}
}
} if(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime >= level.drowntime))
{ self.progressbackground destroy();
self.progressbar destroy(); wait 0.025;
radiusDamage(self.origin,22, 3000, 3000); self.drowning = undefined; self.sounder = undefined; randb = randomInt(4);
deathmethod1 = " made a hole in the water and lay down quietly to rest forever.";
deathmethod2 = " paid a long lasting visit to Davy Jones's Locker."; deathmethod3 = " went diving without breathing apparatus."; deathmethod4 = " swam like a brick.";
if (randb == 0)
iPrintLn( self.name, deathmethod1);
if (randb == 1)
iPrintLn( self.name, deathmethod2);
if (randb == 2)
iPrintLn( self.name, deathmethod3);
if (randb == 3)
iPrintLn( self.name, deathmethod4);
wait .05;
water_vision destroy();
}
else
{ water_vision.alpha = .5;
water_vision fadeOverTime(3);
water_vision.alpha = 0; wait 0.05;
self.progressbackground destroy();
self.progressbar destroy();
self.drowning = undefined;
self.sounder = undefined;
}
wait .05;
}
} |
|
der code ist von MODSONLINE Forum!
im radianten:

meine frage:
wieso zeigt es mir nach einer weile kein energieleiste mehr an?
hängt sich das script auf oder hab ich was falsch gemacht!
danke schon mal an jeden der sich damit beschäftigt(mein geschriebenes zu lesen ich schreib manchmal bisl unverständlich)!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Animus: 23.09.2008 18:43.
|
|
|
|
|
 |
|
|
| RE: Im Wasser Energieleiste(script+trigger) |
 |
Original von Animus
mein geschriebenes zu lesen ich schreib manchmal bisl unverständlich!
Da iss was dran
Okay, hab bei Wildcard vor längerer Zeit mal was gelesen, das er das _drown Script der Map mp_pval korrigieren musste, logischerweise hat er es in die Mapfix IWD reingetan. Benutz also mal dieses Script und lass Deine Map so, wie sie ist und teste noch einmal:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
|
// Multiplayer drown script for CoD
//
// written by [D]delica
// based on _noprone.gsc by r0ger and the stock IW S&D scripts ;)
// Modifed by Spikenaylor for COD2 using the tintscreen script from//[Nip] Drowning Water Script v1
//[Nip] by BionicNipple (bionic.nipple@gmail.com)
// To use this script, you'll need two trigger_multiples, set up pretty much the same
// way as r0gers' _noprone script. One should fill the area where you have water, so as
// long as the player is in the water they will be in contact with it. Open entity
// properties and give it the targetname 'drown'. Create another trigger_multiple above it,
// and connect it to the 'drown' trig as a target. (select 'drown' trig, then the target trig,
// and press W.) The base of this trigger should be at the same level as the surface of
// your water, or a little above, depending on how soon you want people to start drowning.
// This is all you need to do in radiant. Save, close and compile.
//
// In your yourmap.gsc, call _drown with "maps/mp_drown::main();" (no quotes ;) ), and make
// sure you place _drown.gsc in the maps/mp folder of your iwd. For compatibility's sake,
// please rename _drown.gsc if you use it (viz "mp_mymapname_drown.gsc", so ppl can customise
// it to their taste without creating problems with other mods/maps ;).
//
// N.B: the sounds and fx used in this script are all custom. If you want the same sounds,
// I suggest you rip them from Hamlet.pk3. Ditto the fx ^_^
//
// delicauk@gmail.com
main()
{
drownage = getentarray("drown","targetname");
if (isDefined("drownage"))
{
precacheShader("black");
precacheShader("white");
level.barsize = 288;
level.drowntime = 0.20;
level.hurttime = 0.20;
for(d = 0; d < drownage.size; d++)
{
drownage[d] thread water();
}
}
}
Water()
{
while (1)
{
self waittill("trigger", other);
if(isPlayer(other) && other istouching(self))
other thread drown(self);
}
}
drown(trigger)
{
self endon("disconnect");
dceiling = getent(trigger.target,"targetname");
water_vision = undefined;
while (self istouching(trigger) && !self istouching(dceiling))
{
wait .125;
if(isDefined(self.drowning))
return;
self.drowning = true;
if(!isDefined(water_vision))
{
water_vision = newClientHudElem(self);
water_vision.x = 0;
water_vision.y = 0;
water_vision setshader ("white", 640, 480);
water_vision.alignX = "left";
water_vision.alignY = "top";
water_vision.horzAlign = "fullscreen";
water_vision.vertAlign = "fullscreen";
water_vision.color = (.16, .38, .5);
water_vision.alpha = .75;
}
level.barincrement = (level.barsize / (20.0 * level.drowntime));
// level.player allowProne(false);
if(!isDefined(self.progressbackground))
{
self.progressbackground = newClientHudElem(self);
self.progressbackground.alignX = "center";
self.progressbackground.alignY = "middle";
self.progressbackground.x = 320;
self.progressbackground.y = 385;
self.progressbackground.alpha = 0.5;
}
self.progressbackground setShader("black", (level.barsize + 4), 14);
if(!isDefined(self.progressbar))
{
self.progressbar = newClientHudElem(self);
self.progressbar.alignX = "left";
self.progressbar.alignY = "middle";
self.progressbar.x = (320 - (level.barsize / 2.0));
self.progressbar.y = 385;
}
self.progressbar setShader("white", 0, 8);
self.progressbar scaleOverTime(level.drowntime, level.barsize, 8);
self.progresstime = 0;
d = 0;
f = 0;
while(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime < level.drowntime))
{
d ++;
f ++;
wait 0.05;
self.progresstime += 0.05;
if(self.progresstime >= level.hurttime)
{
if(f >= 4)
{
radiusDamage(self.origin,9, 1, 1);
f = 0;
}
}
}
if(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime >= level.drowntime))
{
self.progressbackground destroy();
self.progressbar destroy();
wait 0.025;
radiusDamage(self.origin,22, 3000, 3000);
self.drowning = undefined;
self.sounder = undefined;
randb = randomInt(4);
deathmethod1 = " made a hole in the water and lay down quietly to rest forever.";
deathmethod2 = " paid a long lasting visit to Davy Jones's Locker.";
deathmethod3 = " went diving without breathing apparatus.";
deathmethod4 = " swam like a brick.";
if (randb == 0)
iPrintLn( self.name, deathmethod1);
if (randb == 1)
iPrintLn( self.name, deathmethod2);
if (randb == 2)
iPrintLn( self.name, deathmethod3);
if (randb == 3)
iPrintLn( self.name, deathmethod4);
wait .05;
water_vision destroy();
}
else
{
water_vision.alpha = .5;
water_vision fadeOverTime(3);
water_vision.alpha = 0;
wait 0.05;
self.progressbackground destroy();
self.progressbar destroy();
self.drowning = undefined;
self.sounder = undefined;
}
wait .05;
}
}
|
|
ToM
__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 23.09.2008 20:54.
|
|
|
|
|
|
|
Radianttechnisch kann ich Dir absolut nicht helfen (ich weiss wie die Anwendung aufgeht und wie man kompiliert, das wars). Das Script jedoch läuft in anderen Maps auch, offenbar problemlos. Jetzt heissts abwarten, bis sich jemand Deiner annimmt, der auch den Radianten kennt.
ToM
Nachtrag:
Das könnte evtl helfen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
|
// Multiplayer drown script for CoD
//
// written by [D]delica
// based on _noprone.gsc by r0ger and the stock IW S&D scripts ;)
// Modifed by Spikenaylor for COD2 using the tintscreen script from//[Nip] Drowning Water Script v1
//[Nip] by BionicNipple (bionic.nipple@gmail.com)
// To use this script, you'll need two trigger_multiples, set up pretty much the same
// way as r0gers' _noprone script. One should fill the area where you have water, so as
// long as the player is in the water they will be in contact with it. Open entity
// properties and give it the targetname 'drown'. Create another trigger_multiple above it,
// and connect it to the 'drown' trig as a target. (select 'drown' trig, then the target trig,
// and press W.) The base of this trigger should be at the same level as the surface of
// your water, or a little above, depending on how soon you want people to start drowning.
// This is all you need to do in radiant. Save, close and compile.
//
// In your yourmap.gsc, call _drown with "maps/mp_drown::main();" (no quotes ;) ), and make
// sure you place _drown.gsc in the maps/mp folder of your iwd. For compatibility's sake,
// please rename _drown.gsc if you use it (viz "mp_mymapname_drown.gsc", so ppl can customise
// it to their taste without creating problems with other mods/maps ;).
//
// N.B: the sounds and fx used in this script are all custom. If you want the same sounds,
// I suggest you rip them from Hamlet.pk3. Ditto the fx ^_^
//
// delicauk@gmail.com |
|
__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 23.09.2008 20:55.
|
|
|
|
|
Animus
Steuerzahler

Dabei seit: 29.04.2008
Beiträge: 198

|
|
ja das mit dem einen trigger hatte ich schon am anfang das hat mir nicht gefallen und den anderen die die beta gespielt haben auch nicht weil wenn man das wasser berührt stirbt man sehr schnell egal wie man es einstellt.
ich beschäftige mich mal weiter mit dem script vieleicht bringt es ja was vieleicht auch nicht.
thx erstmal für die schnellen antworten!!!!!!
|
|
|
|
|
Animus
Steuerzahler

Dabei seit: 29.04.2008
Beiträge: 198

|
|
so ich habs für alle die es auch machen wollen das script an sich ist richtig funktioniert auch, problem ist im radiant:
es gibt 2 trigger:
- der eine der im wasser ist (link zum script > wo der player schaden nimmt)
- der andere überwasser (ohne verlinkung > hebt die wirkung bei gleichzeitiger berührung des wasser triggers auf > player nimmt kein schaden mehr)
das ding ist der player darf nicht 3 trigger auf einmal berühren sonst stürzt das script am anfang ab.(....wieso benutze ich mehrere trigger ganz einfach ich kann die trigger nicht über die komplette map ziehen weil sie sonst mit anderen triggern ärger gibt)
lösung die ich in meine map einbaue nur mal als gedankengang falls es noch einen gibt der so ein problem hat baut wellenbrecher ein die der spieler nicht überwinden kann vom im wasser und vom land, so kann er einen übergang von einem zum anderen trigger nict gleichzeitig berühren.
problem gelöst (hab lange in der map 30min getestet ohne das die energieleiste verschwunden ist)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Animus: 25.09.2008 03:05.
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|