Energie vom Clonk soll im Scoreboard angezeigt werden
4 verfasser
Autor
Nachricht
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Energie vom Clonk soll im Scoreboard angezeigt werden So Aug 23, 2009 10:20 pm
Hi
Ich hab ein Problem (wo es wahrscheinlich wieder eine einfache lösung für gibt; Sorry, aber ich bin nich so gut in den Sachen). Die Energie vom Clonk soll im Scoreboard angezeigt werden - das wird sie aber nicht Hier der script (fettgedruckt was nich klappt)
protected func InitializePlayer(iPlr) { // Clonks auch für Spätjoiner if (g_iCrewCount) InitializePlayer2(iPlr);
//nun wird jeder Spieler beim beitritt ins Scoreboard eingefügt: public func InitializePlayer(iPlr){ //Ein Array aus der Globalen mit dem Index des Spielers machen Global(iPlr)=CreateArray(2);
//Kills auf 0 setzen SetScoreboardData(iPlr,0,Format("%d",Global(iPlr)[0]),0);
//Energie auf 100 setzen SetScoreboardData(iPlr,2,Format("%d",Global(iPlr)[2]),100);
//Relaunches müssen auch angezeigt SetScoreboardData(iPlr,1,Format("%d",Global(iPlr)[1]),Global(iPlr)[1]); }
protected func InitializePlayer2(iPlr) {
// Clonks an dieselbe Stelle wie den Erstclonk. Fällt am wenigsten auf var pHiRank = GetHiRank(iPlr); if (pHiRank) for (var i=1; i { var pClonk = CreateObject(CLNK, GetX(pHiRank), GetDefBottom(pHiRank), iPlr); ObjectSetAction(pClonk, "Walk"); MakeCrewMember(pClonk, iPlr); DoEnergy(+500, pClonk); SetDir(GetDir(pHiRank), pClonk); SetCommand(pClonk, "Follow", pHiRank); // geht nicht :C } }
//immer wenn ein Clonk stirbt public func OnClonkDeath(object pClonk, int iKiller) { //Kills erhöhen Global(iKiller)[0]++;
//Relaunchs erhöhen Global(iKiller)[1]++;
//Kein Kill für Selbstmord if(iKiller==GetOwner(pClonk))return(1);
//Punkte ins Scoreboard nach bewärtem System eintragen: SetScoreboardData(iKiller,0,Format("%d",Global(iKiller)[0]),Global(iKiller)[0]);
//Punkte ins Scoreboard nach bewärtem System eintragen: SetScoreboardData(iKiller,1,Format("%d",Global(iKiller)[1]),Global(iKiller)[1]);
//Scoreboard nach Kills Sortieren SortScoreboard(0);
//Nachricht Ausgeben: Log("%s von %s wurde von %s getötet",GetName(pClonk),GetPlayerName(GetOwner(pClonk)),GetPlayerName(iKiller)); }
public func RelaunchPlayer(int iPlr) { //Mal sehen ob er noch Relaunches hat: if(Global(iPlr)[1]<1){RemovePlayer(iPlr);return(1);}
//wenn ja einen abziehen Global(iPlr)[1]--;
//Spieler Relaunchen var Clonk; Clonk=CreateObject(CLNK,Random(LandscapeWidth()),40,iPlr); MakeCrewMember(Clonk,iPlr); DoEnergy(100, Clonk); SetCursor(iPlr,Clonk);
//Und nun das Scoreboard erneunern SetScoreboardData(iPlr,1,Format("%d",Global(iPlr)[1]),Global(iPlr)[1]); }
func RemovePlayer(iPlr){ return(1); } public func RemovePlayer(int iPlr){ //Beide werte auf 0 setzen sorgt dafür das die Zeile verschwindet SetScoreboardData(iPlr,0,0,0); SetScoreboardData(iPlr,1,0,0); }
protected func script1() { // Jetzt gibts erstmal Clonknachschub für alle: Nach Durchschnittsrang der besten Clonks var pHiRank, n, iRank; for (var i=0; i if (pHiRank = GetHiRank(GetPlayerByIndex(i))) { iRank += GetRank(pHiRank); ++n; } iRank = (iRank+n/2)/n; g_iCrewCount = BoundBy(iRank/3, 1, 5); // Zusätzliche Clonks erzeugen if (g_iCrewCount) for (var i=0; i InitializePlayer2(GetPlayerByIndex(i)); }
protected func script100(iPlr,) { // Mehr Spieler brauchen mehr Waffen for (var i=0; i { // Typ bestimmen var id = getSpawnType(); // Platz im Erdreich finden var x = 10 + Random(LandscapeWidth() - 20); var h = GetHorizonHeight(x); var y = h + 10 + Random(LandscapeHeight() - h - 20); if (GetMaterial(x, y) != Material("Earth")) continue; // Objekt per verzögertem Effekt erzeugen var effect = AddEffect("SpawnSparkle", 0, 1, 5, 0, 0); EffectVar(0, 0, effect) = id; EffectVar(1, 0, effect) = x; EffectVar(2, 0, effect) = y; } var pClonk = if(GetEnergy(pClonk)>45000) && if(GetEnergy(pClonk)<50000)Global(iPlr)[2]=100; var pClonk = if(GetEnergy(pClonk)>40000) && if(GetEnergy(pClonk)<44999)Global(iPlr)[2]=90; var pClonk = if(GetEnergy(pClonk)>35000) && if(GetEnergy(pClonk)<39999)Global(iPlr)[2]=80; var pClonk = if(GetEnergy(pClonk)>30000) && if(GetEnergy(pClonk)<34999)Global(iPlr)[2]=70; var pClonk = if(GetEnergy(pClonk)>25000) && if(GetEnergy(pClonk)<29999)Global(iPlr)[2]=60; var pClonk = if(GetEnergy(pClonk)>20000) && if(GetEnergy(pClonk)<24999)Global(iPlr)[2]=50; var pClonk = if(GetEnergy(pClonk)>15000) && if(GetEnergy(pClonk)<19999)Global(iPlr)[2]=40; var pClonk = if(GetEnergy(pClonk)>10000) && if(GetEnergy(pClonk)<14999)Global(iPlr)[2]=30; var pClonk = if(GetEnergy(pClonk)>5000) && if(GetEnergy(pClonk)<9999)Global(iPlr)[2]=20; var pClonk = if(GetEnergy(pClonk)>0) && if(GetEnergy(pClonk)<4999)Global(iPlr)[2]=10;
// Spawns mitzählen g_iSpawnCount++; }
protected func script150() { goto(100); }
private func getSpawnType() { var id = [STFN, SFLN, EFLN, FBMP, ZAPN]; return (id[Random(1 + Min(g_iSpawnCount/5, GetLength(id)))]); }
private func GetHorizonHeight(x) { var y; while (y < LandscapeHeight() && !GBackSemiSolid(x, y)) y += 10; while (y > LandscapeHeight() && GBackSemiSolid(x, y)) --y; return(y); }
global func FxSpawnSparkleTimer(obj, effect, time) { // Variablen auswerten var id = EffectVar(0, 0, effect); var x = EffectVar(1, 0, effect); var y = EffectVar(2, 0, effect); // Funken erzeugen CreateParticle("NoGravSpark", x + RandomX(-6,+6), y + RandomX(-6,+6), 0, -3, RandomX(30,50), RGB(64,255,64,)); // Objekt erzeugen if ((time >= 100) && !EffectVar(3, 0, effect)) EffectVar(3, 0, effect) = CreateObject(id, x, y); // Fertig if (time >= 150) return(-1); }
Ich wollte es so lösen:
Wenn über 45000Energie und unter 50000Energie, dann Lass im Scoreboard anzeigen: 100
Das ist der Error dazu:
Zitat :
ERROR: 'if' may not be used as a parameter (in script100, MinorMeleeExercise2.c4s\script.c:153:21)
- if könnte kein parameter benutzen - versteh ich nicht.
Ihr könnt mir auch andere Lösungsvorschläge geben.
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden So Aug 23, 2009 10:56 pm
Diese Zeile zum Beispiel: var pClonk = if(GetEnergy(pClonk)>45000) && if(GetEnergy(pClonk)<50000)Global(iPlr)[2]=100; Müsste so sein: if(GetEnergy(pClonk)>4500 && GetEnergy(pClonk)<50000)Global(iPlr)[2]=100; Damit es keinen Fehler gibt. Die anderen Zeilen musst du entsprechend umbauen.
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mo Aug 24, 2009 2:24 pm
Danke
hab ich gemacht funktioniert aber immer noch nich:
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mo Aug 24, 2009 2:51 pm
Was genau, passiert nicht?
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mo Aug 24, 2009 9:49 pm
Die Energie wird im Scoreboard nicht angezeigt. Am Anfang schon(100)
Wenn der Clonk Leben verliert bleibt der Scoreboard-Wert auf 100
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mo Aug 24, 2009 10:25 pm
Ich schätze mal, dass pClonk nicht definiert ist.
var pClonk; ist ne erstellte Variable ohne wert.
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Di Aug 25, 2009 6:45 pm
aha Danke
also var pClonk = ?
nur was kommt beim Fragezeichen hin?
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Di Aug 25, 2009 7:39 pm
Hmm, schwer zu sagen, aber ich glaube nicht, dass man mehrere Sachen zuweisen kann, wie in deinem Skript oben. Ich würde einfach es so machen, dass jedesmal, wenn der Clonk schaden erleidet, die obige Anfrage durchgeführ wird.
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Di Aug 25, 2009 7:59 pm
Gibs dazu sowas wie OnClonkDeath oder wie kann man schreiben das was passieren soll wenn der Clonk Schaden bekommt?
imperatoerchen Brigadegeneral
Alter : 29 Ort : Ebersberg Anmeldedatum : 23.03.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Di Aug 25, 2009 9:44 pm
Mit dem Engine-Call
Code:
func CatchBlow(int iLevel, objectpBy)
Kommentar der Hilfe: Wenn das Objekt von einem anderen Objekt geschlagen oder getroffen wird.
niklbobb Hauptman
Anmeldedatum : 28.05.09
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mi Aug 26, 2009 6:04 pm
und was bedeutet iLevel?
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden Mi Aug 26, 2009 6:15 pm
Glaube das ist der Schaden den er einsteckt. Also quasi wenn er 7 Schaden kriegt. Und objectpby ist von wem, er diesen erhält
Gesponserte Inhalte
Thema: Re: Energie vom Clonk soll im Scoreboard angezeigt werden
Energie vom Clonk soll im Scoreboard angezeigt werden