CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


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

 

 Objekt finden

Nach unten 
5 verfasser
AutorNachricht
BennyS
Clonk
Clonk



Anmeldedatum : 19.02.11

Objekt finden Empty
BeitragThema: Objekt finden   Objekt finden EmptySa Feb 19, 2011 6:17 pm

Was muss man im Script einfügen, das ein Team gewinnt, wenn es einen bestimmten Gegenstand in die Basis bringt. Hab schon nachgesucht und zwar einen BEfehl gefunden der funtzt leider net oder ich war zu blöd Shocked. Bitte um ein bereits fertiges Script in dass ich nur noch die id setzten muss (also wenns geht)
mfg
Nach oben Nach unten
Wasserwipf
General
General
Wasserwipf


Männlich Alter : 28
Ort : Schweiz / Aargau
Anmeldedatum : 14.08.09

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySa Feb 19, 2011 7:48 pm

Ich bin kein Scripter, aber ich würd in nen Shedule Eine If() Abfrage stecken, welche FindObject(DEINOBJEKT) aufruft. Ich würds so machen, das der Script in der Basis steht, und die dann danach sucht. Inetwa so:

Code:
Schedule("If(FindObject(OBJE),GameOver(1))",100,10000000);

oder so
Nach oben Nach unten
Donky
Hauptman
Hauptman
Donky


Männlich Alter : 26
Ort : In der Nähe Hamburgs
Anmeldedatum : 03.11.09

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySa Feb 19, 2011 8:02 pm

1. Das hier muss ganz klar nach Anfragen verschoben werden. Admin?
2. Sry Wasserwipf, aber so leicht isses dann auch nicht. Dein Script stimmt vorne und hinten nicht. Also im Szenario machst du dir eine neue Datei, die System.c4g heißt. Darin erstellst du ein Script mit beliebigem Namen. Da schreibst du dann rein:
Code:

#appendto 0000 // id des Objekts

public func Entrance(pNewContainer)
{
  var WhoseBase,Team;
  WhoseBase=GetBase(pNewContainer);
  if(WhoseBase>=0) {
  Team=GetPlayerTeam(WhoseBase);
  for(var Players=GetPlayerCount(C4PT_User);Players>0;Players--)
  if(GetPlayerTeam(GetPlayerByIndex(Players-1))!=Team) EliminatePlayer(GetPlayerByIndex(Players-1));
  Schedule("GameOver()",37);
  }
  return(_inherited(pNewContainer));
}

Falls du das Objekt gemacht hast kannst du auch einfach den Script ohne die erste Zeile in den Script deines Objektes kopieren.

Nach Anfragen verschoben. Ein Punkt an den Autor


Zuletzt von Mozart am Sa Feb 19, 2011 10:53 pm bearbeitet; insgesamt 2-mal bearbeitet (Grund : Darum)
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySa Feb 19, 2011 8:15 pm

Direkt an die ID appenden? Naja, wenns ein besonderes Objekt sein soll, geht das, aber wenns zB daneben noch Fakes geben soll, klappt das nicht.
Außerdem ist der Script seltsam. zB verlangt GetBase als 1. Parameter den Besitzer, kein Objekt.
Und... schön sieht er auch nicht aus. Razz

Am besten ist es, dem Objekt einen Effekt anzuhängen, der das prüft.

Code:
//Dem Objekt den Effekt anhängen
AddEffect("IntCheckBase", pObj, 1, 5);

global func FxIntCheckBaseTimer(object pTarget)
{
  var pContainer = Contained(pTarget);
  if (!pContainer || !(GetCategory(pContainer) & C4D_Structure))
    return;
  //Die Basis braucht eine Flagge
  if (!FindObject2(Find_ActionTarget(pContainer), Find_ID(FLAG)))
    return;
  var iOwner = GetOwner(pContainer);
  if (iOwner == NO_OWNER)
    return;
  //Die anderen eliminieren
  var iTeam = GetPlayerTeam(iPlr);
  for (var i; i < GetPlayerCount(); i++)
    if (GetPlayerTeam(GetPlayerByIndex(i)) != iTeam)
      EliminatePlayer(GetPlayerByIndex(i));
  //Yep, das wars.
  Schedule("GameOver()", 70);
  return FX_Execute_Kill;
}
Nach oben Nach unten
Donky
Hauptman
Hauptman
Donky


Männlich Alter : 26
Ort : In der Nähe Hamburgs
Anmeldedatum : 03.11.09

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySa Feb 19, 2011 8:26 pm

Ok er sieht nicht schön aus, weil ich ihn auf die Schnelle getippt hab. Aber du irrst dich GetBase verlangt ein Objekt, FindBase verlangt einen Spieler.
GetBase
Zitat :
Liefert die Nummer des Spielers, dessen Heimatbasis pObj ist. Rückgabewert -1 wenn pObj keine Heimatbasis ist.
FindBase
Zitat :
Sucht eine Heimatbasis eines Spielers. Die Heimatbasis ist zumeist das Gebäude, auf dem eine Flagge weht.
Nach oben Nach unten
BennyS
Clonk
Clonk



Anmeldedatum : 19.02.11

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySo Feb 20, 2011 4:55 am

ehm geht nich könnts ihr ma für ganz dumme erklären mit der Objekt ID HEZ_? Also wenn das Herz in der Basis ist hat das Team gewonnen. Wär nett...
Nach oben Nach unten
ClonkGeist
Brigadegeneral
Brigadegeneral



Männlich Anmeldedatum : 23.01.10

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySo Feb 20, 2011 11:40 am

Ich gehe mal davon aus, dass du bereits eine System.c4g hast, in deinem Szenario?

In der System.c4g erstellst du in einer neuen Scriptdatei einen globalen Effekt für das Objekt:
Code:
#strict 2

global func FxCheckBaseTimer(object target, int nr)
{
  if(!Contained(target)) return false;
  if(GetAlive(Contained(target)) && Contained(target) != EffectVar(0, target, nr)) EffectVar(0, target, nr) = Contained(target); // Speichert den Clonk, der das Objekt zuletzt hatte.
  if(!FindBase(GetOwner(EffectVar(0, target, nr)))) return false;
  if(Contained(target) != FindBase(GetOwner(EffectVar(0, target, nr)))) return false;
 
  // Eliminieren
  var iTeam = GetPlayerTeam(EffectVar(0, target, nr));
  for(var i = 0; i < GetPlayerCount(); i++)
  {
    if(GetPlayerTeam(i) != iTeam)
    {
      EliminatePlayer(i);
    }
  }

  Schedule("GameOver()", 150);
  return FX_Execute_Kill;
}

Damit das ganze funktioniert, musst du (im Szenarienscript bspw) den Effekt für das Objekt aufrufen:
AddEffect("CheckBase", CreateObject(HEZ_, 100, 50), 101, 10);
Nach oben Nach unten
BennyS
Clonk
Clonk



Anmeldedatum : 19.02.11

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptySo Feb 20, 2011 6:15 pm

ne sry geht auch nich. Hab in der System.c4g das Script erstellt und im Szenarienscript Add Effect gemacht geht nicht sry
Nach oben Nach unten
ClonkGeist
Brigadegeneral
Brigadegeneral



Männlich Anmeldedatum : 23.01.10

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptyMo Feb 21, 2011 4:49 pm

Zeig mal den Teil mit AddEffect im Szenarienscript, also mit der ganzen Funktion.
Nach oben Nach unten
BennyS
Clonk
Clonk



Anmeldedatum : 19.02.11

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptyMo Feb 21, 2011 6:19 pm

muss man das script auch mit func int... machen?
Nach oben Nach unten
ClonkGeist
Brigadegeneral
Brigadegeneral



Männlich Anmeldedatum : 23.01.10

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptyMo Feb 21, 2011 7:29 pm

func int? Was meinst du jetzt damit? Aber paste trotzdem mal die Funktion, ich möchte das gerne sehen. Außerdem: Hast du was an meinem Script den ich dir gegeben habe verändert?
Nach oben Nach unten
BennyS
Clonk
Clonk



Anmeldedatum : 19.02.11

Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden EmptyMo Feb 21, 2011 11:13 pm

verändert nein
#strict

func Initialize() {
AddEffect("CheckBase", CreateObject(HEZ_, 100, 50), 101, 10);

}
Nach oben Nach unten
Gesponserte Inhalte





Objekt finden Empty
BeitragThema: Re: Objekt finden   Objekt finden Empty

Nach oben Nach unten
 
Objekt finden
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Clonk per Namen finden
» Objekte in der Erde finden
» Spielernummer heraus finden
» Zauber auf ein Objekt

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