Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 Schalter mit Tür verbinden und stromversorgung

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
invad05
Clonk
Clonk


Anmeldedatum : 18.05.11

BeitragThema: Schalter mit Tür verbinden und stromversorgung   Mi Mai 18, 2011 1:47 pm

Ich will ein scenario erstellen, in welchem ich objekte aus dem scenario "Research Extreme" verwenden will.

Jez brauch ich noch hilfe bei zwei dingen:

1. Einen Schalter einem Tor / einem Hangartor zuweisen

2. Die Stromversorgung so zu regeln, dass die torfunktionen inaktiv sind, wenn der Generator nicht aktiviert ist

3. Ich will das Airbike so verändern, dass eine weitere funktion hinzugefügt wird: Flammenwerfer
munition soll der kanister für den normalen sft flammenwerfer sein und es soll genau der gleiche schuss und die gleiche flammenmenge abgefeuert werden.
Nach oben Nach unten
Benutzerprofil anzeigen
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Mi Mai 18, 2011 7:35 pm

Hm... Ich kenn das Szen nicht aber bzu drei:

Ich hab mir den Script von so einem Airbike angeschaut und Folgendes herrausgefunden:
(Rauskopieren wird dir nichts nützen weil ich keine Zeit hatte den Script auch wirklich zu schreiben)

Erst mal musst du deinen neuen Schussmodus als locale definieren, also z.B. local iFlammenwerfer.

Dann musst du den Schussmodus einfügen damit man ihn auch anwählen kann und so, dazu musst du dienen Schussmodus an folgenden stellen reinmachen:

Erstmal auf Wefen:
Zitat :

func ControlThrow(object clonk)
{
if (GetAction(clonk) ne "AirbikeFly") return(0);
if (GetAction() eq "Hyperfly") return(1);

// zu schnelles Feuern unterbinden
if (WildcardMatch(GetAction(), "Wait*")) return(1);

var dir = GetDir(clonk);

if (mode == "Cartridges") ToggleShooting(clonk);
if (mode == "Rockets") LaunchRocket(dir, clonk);
if (mode == "Bombs") ReleaseObject(dir, clonk, 1);
if (mode == "Contents") ReleaseObject(dir, clonk, 0);

DEIN NEUER SCHUSSMODUS!!! (z.B. if(mode == "Flammenwerfer") FlamenwerferShooting(clonk) ) Nur ein Beispiel...

return(1);
}


Jetzt damit du den Schussmodus anwähln kannst. Dazu den Schussmodus nach dem selben Muster wie die anderen hier aufgeführten Schussmodi einreihen und nicht vergessen:
Du musst die anderen Schussmodi anpassen damit diner Angewählt werden kann.
Das geht so, als Beispiel:

if(mode==iFlammenwerfer)
{
qFlammenwerfer=ammo;
newAmmo=qCartridges;
newMode="Flammenwerfer";
}

Dann musst du den anderen Modus anpassen, der eigentlich als Changer zu qCartidges führt. Da muss ja jetzt dein Flammenwerfer hin, da dieser ja jetzt zu Cartidges führt:
if (mode == "Contents")
{
qContents = ammo;
newAmmo = iFlammenwerfer;
newMode = "Flammenwerfer";
}

Hier die Stelle zum einfügen der Werte:
Zitat :


func ControlSpecial2(object clonk)
{
if (GetAction(clonk) ne "AirbikeFly") return(1);
if (GetAction() eq "Hyperfly") return(1);

var newAmmo;
var newMode;

if (mode == "Cartridges")
{
qCartridges = ammo;
newAmmo = qRockets;
newMode = "Rockets";
}
if (mode == "Rockets")
{
qRockets = ammo;
newAmmo = qBombs;
newMode = "Bombs";
}
if (mode == "Bombs")
{
qBombs = ammo;
newAmmo = qContents;
newMode = "Contents";
}
if (mode == "Contents")
{
qContents = ammo;
newAmmo = qCartridges;
newMode = "Cartridges";
}
ammo = newAmmo;
mode = newMode;

clonk -> ScrollHud(mode);
clonk -> SetAmmoBar(ammo);
return(1);
}

Hier der Nachladeknopf Smile Hier musst du dienen Schussmods nach dem Muster der anderen reinschreiben und die ID deiner Munition reinschreiben.

Zitat :

func Activate(object clonk)
{
if (ammo == 100) return(1);

var newAmmo;
var reloadSound;

if (mode == "Cartridges")
{
newAmmo = FindContents(CA5B, clonk);
reloadSound = "AB_Reload1";
}
if (mode == "Rockets")
{
newAmmo = FindContents(RB5B, clonk);
reloadSound = "AB_Reload2";
}
if (mode == "Bombs")
{
newAmmo = FindContents(BB5B, clonk);
reloadSound = "AB_Reload2";
}
if (!newAmmo) return(1);

RemoveObject(newAmmo);
SetAction("WaitLong");

ammo = 100;
clonk -> SetAmmoBar(ammo);

Sound(reloadSound);
return(1);
}


Jetzt brauchst du natürlich deine Schussfunktion. Die nennst du wie du sie im Werfen-Knopf definiert hast. Da muss dann ein ähnlicher Script wie beim Flammenwerfer rein. Wie genau das geht kann ich dir nicht sagen weil ich mich noch nie näher mit EKE beschäfftigt habe.


Anmerkung: In dieser Erklärung gehe ich davon aus das du über gewisse Grundkenntnisse verfügst. Wenn du das nicht tust, dann lass dir lieber von jemandem den Script machen, da EKE schon recht kompliziert für fölloge Anfänger ist.
Oder jemand anderst kann dir hier anhand meiner Infos weiterhelfen und den Script schreiben. Aber dafür ist CNDG ja weniger gedacht.

Ich hoffe also das ich helfen konnte ._.
Nach oben Nach unten
Benutzerprofil anzeigen
invad05
Clonk
Clonk


Anmeldedatum : 18.05.11

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Do Mai 19, 2011 3:22 pm

ok, danke.

das mit dem verbinden einer tür mit einem schalter kann ich hinbekommen, indem ich für local(x) ein objekt einsetzen kann (bsp.: Local(1) = Tor #612). Welches kommando muss ich eingeben um das hinzubekommen?
Nach oben Nach unten
Benutzerprofil anzeigen
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Do Mai 19, 2011 8:38 pm

Um die Nummer des Tores herrauszubekommen musst du ingame das Tor selektieren und "ObjectNumber()" eingeben. In der Konsole müsste nun eine Nummer erscheinen. Jetzt machst du:

Code:
Local(1)=Object(int NummerDesTores);
//*---z.B.---*//
Local(1)=Object(612);
Nach oben Nach unten
Benutzerprofil anzeigen
Jokar
Oberst
Oberst
avatar

Alter : 20
Ort : ein dörfle in BW
Anmeldedatum : 18.07.10

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Do Mai 19, 2011 10:13 pm

Wow echt super erklärt Smile
Nach oben Nach unten
Benutzerprofil anzeigen http://Jokar.hat-gar-keine-homepage.de
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Do Mai 19, 2011 10:28 pm

._. hört sich gemein an, meinst du das ernst xD Ich kenne das aus
Gamers Tutorial zu Adventuren
Nach oben Nach unten
Benutzerprofil anzeigen
invad05
Clonk
Clonk


Anmeldedatum : 18.05.11

BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   Do Mai 26, 2011 5:35 pm

ok, ich hab das Airbike jetzt so umgebaut, dass ich es mit Benzin Lade und das Flammen herauskommen. Aber ich möchte, dass die Feuer-Schussfrequenz genau so ist wie beim Flammenwerfer.

Hier ist das Skript vom Umgebautem Airbike:

Code:
//Local(1) - Pilot
//Local(2) - Modus

//Local(6) - Anzahl MG-Kugeln
//Local(7) - Anzahl Raketen
//Local(8) - Anzahl Bomben

#strict

Initialize:
  SetAction("Fliegen");
  return(SetComDir(COMD_Down()));

Hit:
  if(GetXDir()<70) return(0);
  ObjectCall(Local(1),"Inventar");
  return(Explode(50));

Damage:
  if(GetDamage()<30) return(0);
  ObjectCall(Local(1),"Inventar");
  return(Explode(50));

ActivateEntrance:
  if(FindObject(0,0,0,0,0,0,"Biking",this()))  return(0);
  if(!ObjectSetAction(Par(0),"Biking",this())) return(ZuDoof(Par(0)));
 
  if(Par(0)!=Local(1)) ObjectCall(Local(1),"Departure");
 
  SetLocal(1,Par(0)); 
  SetPhysical("Float",200,2);
  return(MunUpdate());

ControlUp:
  if(GetAction(Par(0))ne"Biking") return(0);
  return(SetComDir(COMD_Up()));

ControlDown:
  if(GetAction(Par(0))ne"Biking") return(0);
  if(Stuck()||GBackSolid(0,8))    return(Absteigen(Par(0)));
  return(SetComDir(COMD_Down()));

ControlLeft:
  if(GetAction(Par(0))ne"Biking") return(Fehler(Par(0)));
 
  if(GetAction()ne"Fliegen") SetAction("Fliegen");
  SetDir(DIR_Left());
  return(SetComDir(COMD_Left()));

ControlLeftDouble:
  if(GetAction(Par(0))ne"Biking") return(Fehler(Par(0)));
  if(GetDir()!=DIR_Left())        return(0);
  if(InLiquid())                  return(0);
 
  SetPhysical("Float",800,2);
  return(SetAction("Hyperfly"));

ControlRight:
  if(GetAction(Par(0))ne"Biking") return(Fehler(Par(0)));
 
  if(GetAction()ne"Fliegen") SetAction("Fliegen");
  SetDir(DIR_Right());
  return(SetComDir(COMD_Right()));

ControlRightDouble:
  if(GetAction(Par(0))ne"Biking") return(Fehler(Par(0)));
  if(GetDir()!=DIR_Right())      return(0);
  if(InLiquid())                  return(0); 

  SetPhysical("Float",800,2);
  return(SetAction("Hyperfly"));

ControlThrow: 
  if(GetAction(Par(0))ne"Biking") return(0);
  if(GetAction()eq"Hyperfly")    return(0);
 
  if(Local(2)==0) return(MG()); 
  if(Local(2)==1) return(Raketen());
  if(Local(2)==2) return(Bomben());
  if(Local(2)==3) return(Inhalt());
  return(1);

ControlSpecial2:
  if(GetAction(Par(0))ne"Biking") return(Fehler(Par(0)));
  if(GetAction()eq"Hyperfly")    return(0); 

  CreateMenu(A55B,Par(0));
 
  AddMenuItem("%s","Modus1",A65B,Par(0)); //MG
  AddMenuItem("%s","Modus2",A75B,Par(0)); //Raketen
  AddMenuItem("%s","Modus3",A85B,Par(0)); //Bomben
  AddMenuItem("%s","Modus4",A95B,Par(0)); //Inhalt
  return(1);

Modus1:
  SetLocal(2,0); 
  MunUpdate();
  return(Sound("Modus"));

Modus2:
  SetLocal(2,1);
  MunUpdate();
  return(Sound("Modus"));

Modus3:
  SetLocal(2,2);
  MunUpdate();
  return(Sound("Modus"));

Modus4:
  SetLocal(2,3);
  MunUpdate();
  return(Sound("Modus"));

MG:
  if(InLiquid())            return(0);
  if(!Local(6))            return(Munition());
  if(GetAction()eq"Schuss") return(SetAction("Fliegen")); 
  return(SetAction("Schuss"));

Schuss:
  if(!FindObject(0,0,0,0,0,0,"Biking",this())) return(SetAction("Fliegen"));
  if(!Local(6)) {SetAction("Fliegen"); return(Sound("ABLeer"));} 

  SetVar(0,CreateContents(FE5B));
  SetVar(1,GetDir());
  Exit(Var(0),Sum(-28,Mul(Var(1),56)),2);
  ObjectCall(Var(0),"Start",Var(1));
  Local(6)--;
  return(MunUpdate(Contained()));

Raketen:
  if(GetAction()eq"Warten") return(0);
  if(InLiquid())            return(0);
  if(!Local(7))            return(Munition());
 
  SetVar(0,CreateContents(RT5B));
  SetVar(1,GetDir());
  SetDir(Var(1),Var(0));
  Exit(Var(0),-12+Var(1)*24,3,0,-10+Var(1)*20);
  Local(7)--;
  SetAction("Warten");
  Sound("FARakete");
  return(MunUpdate());

Bomben:
  if(!Local(8)) return(Munition());
 
  SetVar(0,CreateContents(BM5B));
  SetVar(1,GetDir());
  Exit(Var(0),0,15,-90+Var(1)*180,GetXDir()/10,GetYDir()/10);
  Local(8)--;
  Sound("ABAbwurf");
  return(MunUpdate());

Inhalt:
  if(!SetVar(0,Contents())) return(Sound("ABAbwurf"));
  if(GetID(Var(0))==TRP1)  return(Torpedo(Var(0)));
 
  SetVar(1,GetDir());
  if(GetID(Var(0))==BZ5B) SetVar(2,5);
  Exit(Var(0),0,15+Var(2),0,GetXDir()/10,GetYDir()/10);
  Sound("ABAbwurf");
  return(MunUpdate());

Torpedo:
  SetVar(1,GetDir());
  SetDir(Var(1),Par(0));
  if(GetAction()eq"Wasser") Exit(Par(0),-33+Var(1)*66,3,0,-1+Var(1)*2);
  else                      Exit(Par(0),0,15,0,GetXDir()/10,GetYDir()/10);
  Sound("ABAbwurf");
  return(MunUpdate());

ZuDoof:
  if(BitAnd(GetOCF(Par(0)),OCF_CrewMember()))
    PlayerMessage(GetOwner(Par(0)),"%s kann damit nicht umgehen.",Par(0),GetName(Par(0)));
  return(Sound("Error"));

Fehler:
  PlayerMessage(GetOwner(Par(0)),"erst aufsteigen",Par(0));
  return(Sound("Error"));

Absteigen:
  ObjectCall(Par(0),"Departure");
  ObjectSetAction(Local(1),"Walk");
  return(SetPhysical("Float",0,2));

Munition:
  if(Local(2)==0)
  {
    if(!SetVar(0,FindContents(BZ5B,Local(1)))) return(Sound("ABLeer"));
    SetLocal(6,100);
    Sound("ABLaden1");
  }
  if(Local(2)==1)
  {
    if(!SetVar(0,FindContents(A25B,Local(1)))) return(Sound("ABLeer"));
    SetLocal(7,10);
    SetAction("Warten");
    Sound("ABLaden2");
  }
  if(Local(2)==2)
  {
    if(!SetVar(0,FindContents(A35B,Local(1)))) return(Sound("ABAbwurf"));
    SetLocal(8,10);
    Sound("ABLaden2");
  }
  RemoveObject(Var(0));
  return(MunUpdate());

MunUpdate:
  if(Local(2)==0) SetVar(0,Local(6));
  if(Local(2)==1) SetVar(0,Local(7)*10);
  if(Local(2)==2) SetVar(0,Local(8)*10);
  if(Local(2)==3) SetVar(0,ContentsCount()*10);

  ResetPhysical(Local(1));
  DoMagicEnergy(0,Local(1));
  SetPhysical("Magic",100000,2,Local(1));
  return(DoMagicEnergy(Var(0),Local(1))); 

Fliegen: 
  return(SetPhysical("Float",200,2));

Hyperfly:
  if(GetDir()==DIR_Left())  SetVar(0,19);
  if(GetDir()==DIR_Right()) SetVar(0,-19);
  return(Smoke(Var(0),4,5));

Wasser:
  return(SetPhysical("Float",100,2));

Test:
  if(GetAction()eq"Wasser") if(!InLiquid()) SetAction("Fliegen");
  if(GetAction(Local(1))eq"Biking") return(0);
  ObjectCall(Local(1),"Inventar");
  if(GetAction()ne"Fliegen") SetAction("Fliegen");
  return(SetComDir(COMD_Down()));

Auswahl:
  return(Sound("ABAuswahl"));

und der vom normalem Flammenwerfer:

Code:
ControlThrow:
  if(Not(Local(0))) return(Munition(Par(0))); 
  if(SEqual(GetAction(),"Schuss")) return(SetAction("Stop")); 
  return(SetAction("Schuss"));
 
Schuss: 
  if(Not(ObjectCall(Contained(),"ControlReady"))) return(SetAction("Stop"));
  if(Not(ObjectCall(Contained(),"Flammenwerfer"))) return(SetAction("Stop"));
  if(Contained(Contained())) return(SetAction("Stop"));
  if(Not(Local(0))) And(SetAction("Stop"),return(Sound("FWLeer"))); 
  SetVar(0,CreateContents(FE5B));
  SetVar(1,GetDir(Contained()));
  Exit(Var(0),Sum(-14,Mul(Var(1),28)),1);
  ObjectCall(Var(0),"Start",Var(1));
  SetLocal(0,Sub(Local(0),1));
  return(MunUpdate(Contained()));

Munition:
  if(Not(SetVar(0,FindContents(BZ5B,Par(0))))) return(Sound("FWLeer"));
  RemoveObject(Var(0));
  SetLocal(0,500);
  Sound("FWLaden");
  return(MunUpdate(Par(0)));

MunUpdate:
  ResetPhysical(Par(0));
  DoMagicEnergy(0,Par(0));
  SetPhysical("Magic",100000,2,Par(0));
  DoMagicEnergy(Div(Local(0),5),Par(0));
  return(1);

und noch vom Feuer, das dort herauskommt:

Code:
Start: 
  if (Equal(Par(0),DIR_Left())) SetLocal(0,-50);
  if (Equal(Par(0),DIR_Right())) SetLocal(0,50);
  SetLocal(1,Sum(Local(0),Random(10)));
  Incinerate();
  return(SetAction("Flieg"));
 
Flieg:
  SetXDir(Local(1));
  if (Random(2))      SetYDir(Mul(1,Random(10)));
  if (Not(Random(2))) SetYDir(Mul(-1,Random(10)));
  if (GreaterThan(GetActTime(),20)) RemoveObject();
  if (SetVar(0,FindObject(ZAP1,-20,-20,40,40)))                    return(Zap(Var(0)));
  if (SetVar(0,FindObject(KG5B,-5,-5,10,10)))              return(Moff(Var(0)));
  if (SetVar(0,FindObject(MF5B,-5,-5,10,10)))              return(Moff(Var(0)));
  if (SetVar(0,FindObject(SR5B,-5,-5,10,10,0,0,0,NoContainer())))  return(Sarkophator(Var(0)));
  if (SetVar(0,FindObject(BZ5B,-5,-5,10,10,0,0,0,NoContainer())))  return(Benzin(Var(0)));
  if (SetVar(0,FindObject(BO5B,-5,-5,10,10,0,0,0,NoContainer())))  return(Benzin(Var(0)));
  if (SetVar(0,FindObject(AB5B,-5,-5,10,10,0,0,0,NoContainer())))  return(Benzin(Var(0)));
  if (SetVar(0,FindObject(ICE1,-10,-10,20,20,0,0,0,NoContainer()))) return(Eisklumpen(Var(0)));
  if (Equal(GetMaterial(Div(Local(0),5),Sum(-7,Random(10))),Material("Ice"))) Schmelzen();
  if (Equal(GetMaterial(Div(Local(0),5),Sum(-7,Random(10))),Material("Snow"))) Schmelzen();
  if (SetVar(0,FindObject(0,-5,-5,10,10,OCF_Living(),0,0,NoContainer()))) return(Lebewesen(Var(0)));
  if (Random(2)) return(DoCon(Mul(10,Random(10))));
  if (Random(3)) return(DoCon(Mul(5,Random(10))));
  if (Random(4)) return(DoCon(Mul(1,Random(10))));
  DoCon(Mul(5,Random(10)));
  return(1);
 
ContactTop:
  return(RemoveObject());

ContactBottom:
  return(SetYDir(Mul(-5,Random(10))));

Schmelzen: 
  if (Equal(Local(0),50)) SetVar(0,1);
  DigFree(Sum(Div(Local(0),50),Sum(GetX(),Var(0))),GetY(),12);
  CastPXS("Water",10,0,0,0);
  return(RemoveObject());

Zap:
  return(RemoveObject(Par(0)));

Moff:
  DoEnergy(-1,Par(0));
  ObjectCall(Par(0),"Damage",Local(0));
  return(RemoveObject());

Sarkophator:
  if (Not(ObjectCall(Par(0),"Verwundbar"))) return(0);
  Fling(Par(0),Div(Local(0),50));
  DoEnergy(-1,Par(0));
  ObjectCall(Par(0),"Damage",1);
  return(RemoveObject());

Benzin:
  DoDamage(1,Par(0));
  return(RemoveObject());

Eisklumpen:
  RemoveObject(Par(0));
  CastPXS("Water",5,0,0,0);
  return(RemoveObject());

Lebewesen:
  if (Not(GetAlive(Par(0)))) return(0);
  Fling(Par(0),Div(Local(0),25),-1);
  Incinerate(Par(0));
  DoEnergy(-1,Par(0));
  return(RemoveObject());

Wasser:
  return(RemoveObject());

Was muss ich jetzt tuen, damit mehr Feuer in gleicher Zeit aus dem Airbike herauskommt?
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Schalter mit Tür verbinden und stromversorgung   

Nach oben Nach unten
 
Schalter mit Tür verbinden und stromversorgung
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» phpbb3 mit FTP Programm verbinden?
» Chat mit Forum verbinden
» Kategorie mit menüleiste verbinden (persönliches Menü erstellen)
» HTML Seite verbinden ??
» [phpBB3] Ein-Ausklappfunktion für Kategorien über einen Schalter

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Scripthilfe-
Gehe zu: