Clonk Script Hilfe
3 verfasser
Seite 1 von 1
Clonk Script Hilfe
Kann einmal jemand diese Script einwenig erklären?
ich möchte wissen:
-Wie und wo werden die Rotatiosnpunkte(bzw Skelett) festgelegt?
-Wie wird die Bewegung festgelegt?
ich möchte wissen:
-Wie und wo werden die Rotatiosnpunkte(bzw Skelett) festgelegt?
-Wie wird die Bewegung festgelegt?
- Code:
//Locals:
//0:Walk
//1:Drehen
//2:Walk-Lock beim Springen
//3:Arm-Position
//4:Bein-Position
cdecl clonk_rendermenu(o,w,h)
{
glpushmatrix;
gltranslate(5,5,0);
balken(10,h-10,255,255,255);
var l;
l:=(getdamage(o)*h-20)/500;
glpushmatrix;
gltranslate(0,l,0);
balken(10,h-10-l,255,0,0);
glpopmatrix;
gltranslate(20,50,0);
glcolor(255,255,255);
textout("q = Werfen; e = Jump; r = Steuerung übernehmen");
glpopmatrix; glpushmatrix;
l:=contentscount(o);
gltranslate(36+20*l,h-22,0);
while(l>0)
{
l--;
drawitem(intern(Contents(o,l),getid("menuitem")),20);
gltranslate(-20,0,0);
};
glpopmatrix;
gltranslate(w-31,31,0);
drawitem(getid("geld"),31);
l:=local(getplayer(o)).(0);
if(l>9){gltranslate(-8,0,0)};
if(l>99){gltranslate(-8,0,0)};
if(l>999){gltranslate(-8,0,0)};
if(l>9999){gltranslate(-8,0,0)};
if(l>99999){gltranslate(-8,0,0)};
glcolor(255,255,255);
textout("%d",l);
}
cdecl clonk_intern(a)
{
if(a=getid("geld")){return 25}; //Preis
if(a=getid("menuitem")){return getid("clonk_title")}; //Titelbild
if(a=getid("buymenu")){return 1}; //Crew-Flag
}
cdecl clonk_mousepos(o,rel)
{
local(o).(1):=rel;
}
cdecl clonk_damage(o,delta,gesamt)
{
if(gesamt>500){removeobject(o)};
}
cdecl clonk_load
{
loadtexture("clonk_title");
loadmodel("clonk_ganz");
loadmodel("clonk_kopf");
loadtexture("geld");
loadtexture("clonk_title");
}
register clonk_kopf
{
glcolor(211,154,123);
glcalllist(getid("clonk_kopf_skin"));
glcolor(75,46,24);
glcalllist(getid("clonk_kopf_hair"));
glcolor(209,206,206);
glcalllist(getid("clonk_kopf_eyes"));
glcolor(197,110,93);
glcalllist(getid("clonk_kopf_mouth"));
glcolor(44,44,44);
glcalllist(getid("clonk_kopf_pupill"));
glcolor(31,20,3);
glcalllist(getid("clonk_kopf_eyebrows"));
}
cdecl clonk_render(o)
{
glscale(200,200,-200);
gltranslate(0,-110,0);
glpushmatrix;
gltranslate(0,180,9);
glscale(2600,2600,2600);
clonk_kopf;
glpopmatrix;
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_bauch"));
var s; //Beinposition
s:=Sin(local(o).(4),40);
s:=s-10;
var s2; //Arm-Schlenkern
s2:=20-cos(local(o).(4),20);
if(local(o).(3)>10){s2:=0};
const sz=90;
//Beine
glpushmatrix;
glrotate(s,1,0,0);
glcalllist(getid("clonk_ganz_rechts_oben"));
gltranslate(0,-sz,0);
glrotate(s2,1,0,0);
gltranslate(0,sz,0);
glcalllist(getid("clonk_ganz_rechts_unten"));
glpopmatrix;
glpushmatrix;
glrotate(-s,1,0,0);
glcalllist(getid("clonk_ganz_links_oben"));
gltranslate(0,-sz,0);
glrotate(s2,1,0,0);
gltranslate(0,sz,0);
glcalllist(getid("clonk_ganz_links_unten"));
glpopmatrix;
//Arme
var r;
r:=gety(getspeed(o))/2;
if(r>0){r:=90-r} else {r+=90};
var r2;
if(local(o).(3)){r2:=0} else {r:=90;r2:=sin(local(o).(4),40)};
glpushmatrix;
gltranslate(-60,90,0);
glrotate(-(local(o).(3)+r2),1,0,0);
glrotate(r,0,0,1);
gltranslate(60,-90,0);
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_rechts_oarm"));
gltranslate(-118,89,0);
glrotate(r2/2+15,0,1,0);
gltranslate(118,-89,0);
glcolor(211,154,123);
glcalllist(getid("clonk_ganz_rechts_uarm"));
glpopmatrix;
glpushmatrix;
gltranslate(60,90,0);
glrotate(-(local(o).(3)-r2),1,0,0);
glrotate(-r,0,0,1);
gltranslate(-60,-90,0);
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_links_oarm"));
gltranslate(118,89,0);
glrotate(r2/2-15,0,1,0);
gltranslate(-118,-89,0);
glcolor(211,154,123);
glcalllist(getid("clonk_ganz_links_uarm"));
glpopmatrix;
}
cdecl clonk_init(o)
{
local(o).(0):=0;
local(o).(1):=0;
local(o).(2):=0;
local(o).(3):=90;
}
cdecl clonk_checkwalk(o)
{
if(local(o).(2)) {return 0};
setimpuls(o,0,8,0);
dodirimpuls(o,local(o).(0));
}
cdecl clonk_tick(o,t)
{
if(local(o).(2)){local(o).(4):=Sin(70+gety(getspeed(o)),70)} else
{
if(local(o).(0)=0){local(o).(4):=0} else {local(o).(4)+=local(o).(0)/7};
};
if(local(o).(1))
{
if(local(o).(2)) {return setrdir(o,0)};
setrdir(o,local(o).(1));
if(length(GetSpeed(o))=0)
{doimpuls(o,0,3,0)};
};
if(local(o).(3)>0){local(o).(3)-=3};
if(local(o).(3)<0){local(o).(3)++};
}
cdecl clonk_keydown(o,key)
{
if(key=119)
{
local(o).(0):=100;
clonk_checkwalk(o);
};
if(key=115)
{
local(o).(0):=-100;
clonk_checkwalk(o);
};
if(key=97)
{
local(o).(1):=2;
};
if(key=100)
{
local(o).(1):=-2;
};
if(key=101) //Springen
{
if(local(o).(2)=0)
{
local(o).(2):=1;
doimpuls(o,0,70,0);
local(o).(3):=-30;
};
};
}
cdecl clonk_hit(o,o2)
{
if(local(o).(0)) {clonk_checkwalk(o)};
local(o).(2):=0;
if(o2=0){return 0};
//Einsammeln
if(intern(o2,getdef(o))) //Collectible prüfen
{
intern2(o,getdef(o)+2,o2); //RejectCollect
};
if(intern(o2,getdef(o)+2)<>0) //Schieben
{
if(getplayer(o2)){return 0};
setr(o2,getr(o));
//setimpuls(o,0,0,0);
dodirimpuls(o2,40);
doimpuls(o2,0,5,0);
local(o).(3):=70;
};
}
cdecl clonk_intern2(o,n,o2)
{
if(n=getid("clonk")+2) //RejectCollect
{
if(contentscount(o)<1) //Regel: nur 1s aufnehmen
{
enter(o2,o);
local(o).(3):=20;
intern2(o2,getdef(o),o);
};
};
}
cdecl clonk_keyup(o,key)
{
if(key=113) //Werfen
{
if(contentscount(o)>0)
{
var a;
a:=contents(o,0);
exit(a);
doimpuls(a,0,80,0);
dodirimpuls(a,100);
local(o).(3):=150;
};
};
if(key=119 or key=115)
{
local(o).(0):=0;
};
if(key=97 or key=100)
{
local(o).(1):=0;
setrdir(o,0);
};
if(key=114) //Steuerung übernehmen
{
var a;
dodirimpuls(o,800);
a:=getspeed(o);
a:=TryMove(o,getx(a),gety(a),getz(a));
dodirimpuls(o,-800);
if(a<>0)
{
if(intern(a,getdef(o)+1)<>0) {pushcrew(o,a);intern2(a,getdef(o)+1,o)}; //Spielersteuerung und intern2-Aufruf
};
};
}
kakerlake- Anzahl der Beiträge : 380
Anmeldedatum : 11.01.09
Re: Clonk Script Hilfe
also zu 1.:
die rotationsachse is immer in der mitte des objektes
also wenn ich mich nich irre ist der script für eine rotation
glrotate(objekt,winkel,x,y,z);
einer der letzten drei werte muss 1 sein und sagt die achse der drehung aus
die rotationsachse is immer in der mitte des objektes
also wenn ich mich nich irre ist der script für eine rotation
glrotate(objekt,winkel,x,y,z);
einer der letzten drei werte muss 1 sein und sagt die achse der drehung aus
Re: Clonk Script Hilfe
nuja ganz so trivial ist das nicht.
Ich werd mal auskommentieren
noch ein Hinweis: Shadowprimus arbeitet derzeit am Clonkmodel und entfernt aller paar wochen mal das ein- oder andere Gelenkartefakt. Ihr könnt aber trotzdem versuchen, neue Clonks zu scripten.
Wichtig: Der ClonkScript ist der eigentliche Kern des Spielaufbaus. Deshalb ändert sich das Script auch ständig und Änderungen müssten mit mir abgesprochen werden.
Ich werd mal auskommentieren
- Code:
//Locals:
//0:Walk
//1:Drehen
//2:Walk-Lock beim Springen
//3:Arm-Position
//4:Bein-Position
- Code:
cdecl clonk_rendermenu(o,w,h)
{
glpushmatrix;
- Code:
gltranslate(5,5,0);
balken(10,h-10,255,255,255);
var l;
l:=(getdamage(o)*h-20)/500;
glpushmatrix;
gltranslate(0,l,0);
balken(10,h-10-l,255,0,0);
glpopmatrix;
gltranslate(20,50,0);
glcolor(255,255,255);
textout("q = Werfen; e = Jump; r = Steuerung übernehmen");
glpopmatrix; glpushmatrix;
- Code:
l:=contentscount(o);
gltranslate(36+20*l,h-22,0);
while(l>0)
{
l--;
drawitem(intern(Contents(o,l),getid("menuitem")),20);
gltranslate(-20,0,0);
};
glpopmatrix;
gltranslate(w-31,31,0);
- Code:
drawitem(getid("geld"),31);
l:=local(getplayer(o)).(0);
if(l>9){gltranslate(-8,0,0)};
if(l>99){gltranslate(-8,0,0)};
if(l>999){gltranslate(-8,0,0)};
if(l>9999){gltranslate(-8,0,0)};
if(l>99999){gltranslate(-8,0,0)};
glcolor(255,255,255);
textout("%d",l);
}
- Code:
cdecl clonk_intern(a)
{
if(a=getid("geld")){return 25}; //Preis
if(a=getid("menuitem")){return getid("clonk_title")}; //Titelbild
if(a=getid("buymenu")){return 1}; //Crew-Flag
}
- Code:
cdecl clonk_mousepos(o,rel)
{
local(o).(1):=rel;
}
- Code:
cdecl clonk_damage(o,delta,gesamt)
{
if(gesamt>500){removeobject(o)};
}
- Code:
cdecl clonk_load
{
loadtexture("clonk_title");
loadmodel("clonk_ganz");
loadmodel("clonk_kopf");
loadtexture("geld");
loadtexture("clonk_title");
}
- Code:
register clonk_kopf
{
glcolor(211,154,123);
glcalllist(getid("clonk_kopf_skin"));
glcolor(75,46,24);
glcalllist(getid("clonk_kopf_hair"));
glcolor(209,206,206);
glcalllist(getid("clonk_kopf_eyes"));
glcolor(197,110,93);
glcalllist(getid("clonk_kopf_mouth"));
glcolor(44,44,44);
glcalllist(getid("clonk_kopf_pupill"));
glcolor(31,20,3);
glcalllist(getid("clonk_kopf_eyebrows"));
}
- Code:
cdecl clonk_render(o)
{
- Code:
glscale(200,200,-200);
gltranslate(0,-110,0);
- Code:
glpushmatrix;
gltranslate(0,180,9);
glscale(2600,2600,2600);
clonk_kopf;
glpopmatrix;
- Code:
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_bauch"));
- Code:
var s; //Beinposition
s:=Sin(local(o).(4),40);
s:=s-10;
var s2; //Arm-Schlenkern
s2:=20-cos(local(o).(4),20);
if(local(o).(3)>10){s2:=0};
const sz=90;
- Code:
//Beine
glpushmatrix;
- Code:
glrotate(s,1,0,0);
glcalllist(getid("clonk_ganz_rechts_oben"));
- Code:
gltranslate(0,-sz,0);
glrotate(s2,1,0,0);
gltranslate(0,sz,0);
glcalllist(getid("clonk_ganz_rechts_unten"));
glpopmatrix;
- Code:
glpushmatrix;
glrotate(-s,1,0,0);
glcalllist(getid("clonk_ganz_links_oben"));
gltranslate(0,-sz,0);
glrotate(s2,1,0,0);
gltranslate(0,sz,0);
glcalllist(getid("clonk_ganz_links_unten"));
glpopmatrix;
- Code:
//Arme
var r;
r:=gety(getspeed(o))/2;
if(r>0){r:=90-r} else {r+=90};
var r2;
- Code:
if(local(o).(3)){r2:=0} else {r:=90;r2:=sin(local(o).(4),40)};
- Code:
glpushmatrix;
gltranslate(-60,90,0);
glrotate(-(local(o).(3)+r2),1,0,0);
glrotate(r,0,0,1);
gltranslate(60,-90,0);
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_rechts_oarm"));
gltranslate(-118,89,0);
glrotate(r2/2+15,0,1,0);
gltranslate(118,-89,0);
glcolor(211,154,123);
glcalllist(getid("clonk_ganz_rechts_uarm"));
glpopmatrix;
glpushmatrix;
gltranslate(60,90,0);
glrotate(-(local(o).(3)-r2),1,0,0);
glrotate(-r,0,0,1);
gltranslate(-60,-90,0);
glcolor(0,0,255);
glcalllist(getid("clonk_ganz_links_oarm"));
gltranslate(118,89,0);
glrotate(r2/2-15,0,1,0);
gltranslate(-118,-89,0);
glcolor(211,154,123);
glcalllist(getid("clonk_ganz_links_uarm"));
glpopmatrix;
}
- Code:
cdecl clonk_init(o)
{
local(o).(0):=0;
local(o).(1):=0;
local(o).(2):=0;
local(o).(3):=90;
}
- Code:
cdecl clonk_checkwalk(o)
{
if(local(o).(2)) {return 0};
setimpuls(o,0,8,0);
dodirimpuls(o,local(o).(0));
}
- Code:
cdecl clonk_tick(o,t)
{
if(local(o).(2)){local(o).(4):=Sin(70+gety(getspeed(o)),70)} else
{
if(local(o).(0)=0){local(o).(4):=0} else {local(o).(4)+=local(o).(0)/7};
};
- Code:
if(local(o).(1))
{
if(local(o).(2)) {return setrdir(o,0)};
setrdir(o,local(o).(1));
if(length(GetSpeed(o))=0)
{doimpuls(o,0,3,0)};
};
if(local(o).(3)>0){local(o).(3)-=3};
if(local(o).(3)<0){local(o).(3)++};
}
- Code:
cdecl clonk_keydown(o,key)
{
if(key=119)
{
local(o).(0):=100;
clonk_checkwalk(o);
};
if(key=115)
{
local(o).(0):=-100;
clonk_checkwalk(o);
};
if(key=97)
{
local(o).(1):=2;
};
if(key=100)
{
local(o).(1):=-2;
};
if(key=101) //Springen
{
if(local(o).(2)=0)
{
local(o).(2):=1;
doimpuls(o,0,70,0);
local(o).(3):=-30;
};
};
}
- Code:
cdecl clonk_hit(o,o2)
{
if(local(o).(0)) {clonk_checkwalk(o)};
local(o).(2):=0;
if(o2=0){return 0};
//Einsammeln
if(intern(o2,getdef(o))) //Collectible prüfen
{
intern2(o,getdef(o)+2,o2); //RejectCollect
};
if(intern(o2,getdef(o)+2)<>0) //Schieben
{
if(getplayer(o2)){return 0};
setr(o2,getr(o));
//setimpuls(o,0,0,0);
dodirimpuls(o2,40);
doimpuls(o2,0,5,0);
local(o).(3):=70;
};
}
cdecl clonk_intern2(o,n,o2)
{
if(n=getid("clonk")+2) //RejectCollect
{
if(contentscount(o)<1) //Regel: nur 1s aufnehmen
{
enter(o2,o);
local(o).(3):=20;
intern2(o2,getdef(o),o);
};
};
}
- Code:
cdecl clonk_keyup(o,key)
{
if(key=113) //Werfen
{
if(contentscount(o)>0)
{
var a;
a:=contents(o,0);
exit(a);
doimpuls(a,0,80,0);
dodirimpuls(a,100);
local(o).(3):=150;
};
};
if(key=119 or key=115)
{
local(o).(0):=0;
};
if(key=97 or key=100)
{
local(o).(1):=0;
setrdir(o,0);
};
if(key=114) //Steuerung übernehmen
{
var a;
dodirimpuls(o,800);
a:=getspeed(o);
a:=TryMove(o,getx(a),gety(a),getz(a));
dodirimpuls(o,-800);
if(a<>0)
{
if(intern(a,getdef(o)+1)<>0) {pushcrew(o,a);intern2(a,getdef(o)+1,o)}; //Spielersteuerung und intern2-Aufruf
};
};
}
noch ein Hinweis: Shadowprimus arbeitet derzeit am Clonkmodel und entfernt aller paar wochen mal das ein- oder andere Gelenkartefakt. Ihr könnt aber trotzdem versuchen, neue Clonks zu scripten.
Wichtig: Der ClonkScript ist der eigentliche Kern des Spielaufbaus. Deshalb ändert sich das Script auch ständig und Änderungen müssten mit mir abgesprochen werden.
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: Clonk Script Hilfe
ok danke vielmals an euch beide, hat geholfen !
kakerlake- Anzahl der Beiträge : 380
Anmeldedatum : 11.01.09
Ähnliche Themen
» Umschalten von Clonk zu Clonk
» Script Szenario
» Hilfe bei Heightmaps benötigt
» Cinema 4D Hilfe
» Hilfe mit Shader scripts
» Script Szenario
» Hilfe bei Heightmaps benötigt
» Cinema 4D Hilfe
» Hilfe mit Shader scripts
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten