Page 7 of 13

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 5:00 pm
by Lexx
Dein Rechner ist zu schnell für den Fade. Ist bei jedem aktuellem Rechner so. Ich glaube, mit Timeslip's Engine Tweak kann man das umstellen, habs selbst aber noch nie gemacht, weil  die Geschwindigkeit halt auf jedem Rechner unterschiedlich ist.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 5:02 pm
by Mr.Wolna
ja also soll ich 1 beim script lassen oder wat? :s000:

so Zeit ist eingestellt.  was fällt noch...hmm... wie war das mit den counter fidne die idee eines neun perks plus bei 1000 Bäumen +Str ne Starke und nette IDee!

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 5:05 pm
by Lexx
Ich würde 5 oder so drin stehen lassen.

Ich persönlich finde alle meine Ideen dazu toll. :P Ab 1000 Bäume +1 Stärke, die Nachricht im Log unten links, das Skill basierende Hacken (so das manchmal auch nichts bei raus kommt), etc.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 5:12 pm
by Mr.Wolna
wie manchmal auch nichts?

Glaubst du ich soll beim release auf NMa das mit der stärke erwähnen, ich sollte nur sagen hackt fleißig Bäume dann apssiert euch was tollen...mal sehen wer bis 1k kommt^^ aber fidnest du 1000k nicht all zu viel? Obwohl :-\

whatever versuch grad das mit der gvar hinzukriegen denke ich packs, aber wohin sollen die ifs? weil die müssen ja in der gleichen procedure sein...oder etwa nicht? Mit and END else oder?


edit, warum ist gvar Baum_gefaellt undefiniert ich habe es doch per FSE in gam13 und comand reineditiert!
können die GVARS direkt im script definiert werden?

Edit ok ein blick in dein Tut hat weitergeholfen musste die gvar als odefenieren(im script) aber irgenwie komlimiert er aber passiert nicht...naja ich versuch noch mal was.

ok essit mal wdier was flasch gehn nicht :wall1cf:

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:27 pm
by le Chew
@wolna

Strukturiere deine Scripte mal so wie es Lexx schon angemerkt hat - und besorg dir nen ordentlichen Editor fürs Scripten, der dir z. B. anzeigt ob eine Klammer geschlossen wurde, oder nicht. Word oder der Notepad-Scheiß von Windows ist absolut nicht zu empfehlen. (auch diese möchtegern-Version notepad++ oder wie es sich nennt ist im Vergleich zu echten Editoren ne Krankheit). ConText is z. B. ganz gut.

Grund: Du kommst beim debuggen leichter drauf ob du wieder nur schlampig warst, oder es wirklich am fehlenden Knowhow deinerseits liegt, wenn etwas nicht funktioniert. Wegen jeder Kleinigkeit nachfragen zu müssen bremst ziemlich aus ;-)

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:31 pm
by Mr.Wolna
chew ich benütze FSE und was meint ihr mit strukturiere ist doch übersichtlich.

Ich kann mir nicht erklären warum dieser Code nicht geht/bzw er comlimiert, aber bei Zehn geföllten Bäumen kommt nicht das gewünschte Ergebniss kuk:

Code: Select all

procedure use_obj_on_p_proc begin
variable NeuBaum;
variable NeuHolz;
  if (global_var(GVAR_Baum_gefaellt) >= 10)
      then begin
      play_sfx("saloon");
end else
  if ((obj_pid(obj_being_used_with) == PID_FIRST_TREE)
    or (obj_pid(obj_being_used_with) == PID_SECOND_TREE)
    or (obj_pid(obj_being_used_with) == PID_THIRD_TREE)) then begin
      gfade_out(5);
      play_sfx("mamtntba");
      NeuBaum:=create_object(PID_TEMPLE_SKULL_POLE,tile_num(obj_being_used_with),elevation(obj_being_used_with));
      destroy_object(obj_being_used_with);
      game_time_advance(30*ONE_GAME_MINUTE);
      set_global_var(GVAR_Baum_gefaellt, GVAR_Baum_gefaellt+1)
      gfade_in(5);

      NeuHolz:=create_object(PID_FIREWOOD,0,0);
      add_obj_to_inven(dude_obj,NeuHolz);
 end
 end
ist doch gut strukturiert oder?

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:37 pm
by le Chew
@Wolna

Deine Blöcke sind "unleserlich" -  man muss um deinen Code zu verstehen erst mal alles im Kopf umstrukturieren.

Code: Select all

procedure use_obj_on_p_proc begin
	variable NeuBaum;
	variable NeuHolz;
 	
	if (global_var(GVAR_Baum_gefaellt) >= 10) then begin
      		play_sfx("saloon");
	end
	else
  		if ((obj_pid(obj_being_used_with) == PID_FIRST_TREE)
    			or (obj_pid(obj_being_used_with) == PID_SECOND_TREE)
    			or (obj_pid(obj_being_used_with) == PID_THIRD_TREE)) then begin
   				gfade_out(5);
      				
				play_sfx("mamtntba");
      				NeuBaum:=create_object(PID_TEMPLE_SKULL_POLE,tile_num(obj_being_used_with),elevation(obj_being_used_with));
      				destroy_object(obj_being_used_with);
      				game_time_advance(30*ONE_GAME_MINUTE);
      				set_global_var(GVAR_Baum_gefaellt, GVAR_Baum_gefaellt+1)
      				
				gfade_in(5);

      				NeuHolz:=create_object(PID_FIREWOOD,0,0);
      				add_obj_to_inven(dude_obj,NeuHolz);
 		end
 	end	
Eine Prozedur ist immer der Kopf, alles andere wird eingerückt, jede If-Unterscheidung bildet ebenfalls einen Kopfbereich, alles innerhalb dieses logischen Blocks wird eigerückt, ein nachfolgendes else nimmt die gleiche Position wie das If ein etc. pp.

Ein ordentlicher Editor würde dir bei deinem Klammerproblem helfen, die ordentliche Struktur das du nicht irgendwann die Übersicht verlierst. Sozusagen das kleine Einmaleins der Scripterei.

Edit: Hab ein Semikolon (rot) dazugefügt - denke das dürfte das Problem an diesem Schnippsel gewesen sein:

set_global_var(GVAR_Baum_gefaellt, GVAR_Baum_gefaellt+1);

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:39 pm
by Mr.Wolna
wie gesagt ich benütze FSE. Dieser Code wird aber immer noch nicht gehen der sit ja gleichgeblieben oder?

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:44 pm
by Lexx

Code: Select all

	end
	else
  		if
Das kann aber Probleme verursachen. FSE bzw. die Fallout Scripte sind da sehr pingelig. Ich persönlich schreibe _immer_ "end else if" genau so aus. Ist einfacher sicherer.

Wie schon per PN geschrieben.. Wolna, du benutzt nicht zufällig wieder Killaps Mod ohne das du die Scripte von ihm hast?

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:47 pm
by Mr.Wolna
das sit killasp mod mit allen headers für 1.2 alle bedie scripts gehen nicht, meienr schon aber passiet nix ingame :wall1cf:

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:49 pm
by Lexx
Ja, ich seh schon, was bei dir mindestens falsch ist. Dein

Code: Select all

	if (global_var(GVAR_Baum_gefaellt) >= 10) then begin
      		play_sfx("saloon");
	end
musst du IN die andere if-Funktion packen, so wie ich dir das schon tausend mal per PN geschrieben habe. Ich zitiere mal eine ältere:
procedure use_obj_on_p_proc begin
variable NeuBaum;
  if ((obj_pid(obj_being_used_with) == PID_FIRST_TREE)
    or (obj_pid(obj_being_used_with) == PID_SECOND_TREE)
    or obj_pid(obj_being_used_with) == PID_THIRD_TREE)) then begin
      NeuBaum:=create_object(PID_TEMPLE_SKULL_POLE,tile_num(obj_being_used_with),elevation(obj_being_used_with));
      destroy_object(obj_being_used_with);
      // hier jetzt noch die Items in das Inventar des Spielers setzen
      // evtl. globale Variable + 1hochzählen und dann mit if auswerten
      // if (global_var(GVAR_XY) >= 10) then begin // größer oder gleich 10 ist nur ein Beispiel.
      // [...]
      // end

  end
end
Bei dir ist auf jeden Fall die Reihenfolge falsch, weil du immer erst fragst, ob die Variable größer oder gleich 10 ist. Soll heißen, theoretisch dürfte dein Hacken nicht mehr gehen, wenn du 10 Bäume gefällt hast, weil dann das >= 10 erfüllt ist und der else-Block übersprungen wird.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:53 pm
by le Chew
@Lexx

Oki, wenn das Fehler verursacht dann ist die Struktur an dieser Stelle natürlich eher suboptimal.
musst du IN die andere Schleife packen, so wie ich dir das schon tausend mal per PN geschrieben habe. Ich zitiere mal eine ältere:
btw - wo siehst du hier ne Schleife;)

@Wolna

Hast du meinen Edit mit dem fehlenden Semikolon gelesen?

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:54 pm
by Lexx
chewie wrote: btw - wo siehst du hier ne Schleife;)
Jo, war Reflex. In Fallout gibt es keine richtigen Schleifen. Man kann sich höchstens Pseudo-Schleifen über if-then-else basteln.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 6:57 pm
by Mr.Wolna
ähmmm so ?

Code: Select all

procedure use_obj_on_p_proc begin
	variable NeuBaum;
	variable NeuHolz;
	
  		if ((obj_pid(obj_being_used_with) == PID_FIRST_TREE)
    			or (obj_pid(obj_being_used_with) == PID_SECOND_TREE)
    			or (obj_pid(obj_being_used_with) == PID_THIRD_TREE)) then begin
   				gfade_out(5);
      				
				play_sfx("mamtntba");
      				NeuBaum:=create_object(PID_TEMPLE_SKULL_POLE,tile_num(obj_being_used_with),elevation(obj_being_used_with));
      				destroy_object(obj_being_used_with);
      				game_time_advance(30*ONE_GAME_MINUTE);
      				set_global_var(GVAR_Baum_gefaellt, GVAR_Baum_gefaellt+1)
      				
				gfade_in(5);

      				NeuHolz:=create_object(PID_FIREWOOD,0,0);
      				add_obj_to_inven(dude_obj,NeuHolz);
 	end else 
      if (global_var(GVAR_Baum_gefaellt) >= 10) then begin
      		play_sfx("saloon");
	end
	else
 	end	
wie gesagt bin noch ziemlic am anfang was das scripten angeht.

@ Chew nein mach ich gleich!

kann mal einer bei +10 die den sound in ein floater aus irgendeien text stellen, damit ich 100 sicher gehen kann das nicht sich schneidet!

und sot die define richtig?

#define GVAR_Baum_gefaellt (1)

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 9:07 pm
by Lexx
Nein.... jetzt sagst du, wenn Schaufel + Baum, dann... ansonsten, wenn Variable >= 10, dann spiele Ton, ansonsten nichts. Das ist logisch falsch.

Mach doch einfach genau so, wie ich oben markiert habe.
procedure use_obj_on_p_proc begin
variable NeuBaum;
variable NeuHolz;

  if ((obj_pid(obj_being_used_with) == PID_FIRST_TREE)
    or (obj_pid(obj_being_used_with) == PID_SECOND_TREE)
    or (obj_pid(obj_being_used_with) == PID_THIRD_TREE)) then begin
      gfade_out(5);
     
      play_sfx("mamtntba");
      NeuBaum:=create_object(PID_TEMPLE_SKULL_POLE,tile_num(obj_being_used_with),elevation(obj_being_used_with));
      destroy_object(obj_being_used_with);
      game_time_advance(30*ONE_GAME_MINUTE);
      set_global_var(GVAR_Baum_gefaellt, GVAR_Baum_gefaellt+1)
     
      gfade_in(5);

      NeuHolz:=create_object(PID_FIREWOOD,0,0);
      add_obj_to_inven(dude_obj,NeuHolz);

      // an dierser Stelle wird gefragt, ob der aktuelle Baum der 10. oder mehr ist.
      // Wenn der Baum die Nummer 10 oder mehr ist, wird alles zwischen if und end ausgeführt. Wenn nicht, wird der Teil einfach ignoriert.
      if (global_var(GVAR_Baum_gefaellt) >= 10) then begin
      play_sfx("saloon");
      end

else
end
Mr.Wolna wrote:und sot die define richtig?

#define GVAR_Baum_gefaellt (1)
Äh, globale Variablen werden in der global.h definiert. "#define GVAR_Baum_gefaellt (1)" wirst du in keinem der offiziellen Scripte finden.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 10:10 pm
by Mr.Wolna
ha aber ohne diesen Beitrag geht es nicht zu komplimieren -.-

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 10:20 pm
by Lexx
Die globalen Variablen brauchst du nur in der global.h definieren, alles andere ist überflüssig.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 11:18 pm
by Mr.Wolna
also brach ich sogar die global.h nicht in den script zu inkluden?

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 11:22 pm
by Lexx
Ohne kannst du die Scripte nicht compilieren. Außerdem wird die Datei automatisch eingebunden. Wenn du die Header-Datei entfernen wollen würdest, müsstest du erst noch einige andere Dateien bearbeiten... absolut sinnlos, weil wie schon geschrieben, ohne geht das Compilieren nicht.

Re: Ein paar Scriptfragen.

Posted: Wed Aug 20, 2008 11:36 pm
by Mr.Wolna
ja also kann ich sie ja doch weglassen...da sie im definde.h drinne sit , aey? und wegen dieser GVAR sache bsit du dir sicher das es so geht mit 10x Bäumen und so, irgndwie geht die Zeile nicht.