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

Austausch | 
 

 Objekt finden

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


Anmeldedatum : 19.02.11

BeitragThema: Objekt finden   Sa 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
Benutzerprofil anzeigen
Wasserwipf
General
General
avatar

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

BeitragThema: Re: Objekt finden   Sa 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
Benutzerprofil anzeigen
Donky
Hauptman
Hauptman
avatar

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

BeitragThema: Re: Objekt finden   Sa 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
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Objekt finden   Sa 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
Benutzerprofil anzeigen
Donky
Hauptman
Hauptman
avatar

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

BeitragThema: Re: Objekt finden   Sa 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
Benutzerprofil anzeigen
BennyS
Clonk
Clonk


Anmeldedatum : 19.02.11

BeitragThema: Re: Objekt finden   So 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
Benutzerprofil anzeigen
ClonkGeist
Brigadegeneral
Brigadegeneral


Männlich Anmeldedatum : 23.01.10

BeitragThema: Re: Objekt finden   So 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
Benutzerprofil anzeigen
BennyS
Clonk
Clonk


Anmeldedatum : 19.02.11

BeitragThema: Re: Objekt finden   So 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
Benutzerprofil anzeigen
ClonkGeist
Brigadegeneral
Brigadegeneral


Männlich Anmeldedatum : 23.01.10

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

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


Anmeldedatum : 19.02.11

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

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


Männlich Anmeldedatum : 23.01.10

BeitragThema: Re: Objekt finden   Mo 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
Benutzerprofil anzeigen
BennyS
Clonk
Clonk


Anmeldedatum : 19.02.11

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

verändert nein
#strict

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

}
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Objekt finden   

Nach oben Nach unten
 
Objekt finden
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Kann die Einstellung zur aktivierung von HTML Code in Beitägen nicht finden.
» Button Benutzername finden funktioniert bei PN nicht mehr
» CSS Codes heraus finden
» Metatags Google finden....
» Forum ist über google nicht zu finden

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