s2ext

Bitte logg dich ein oder registriere dich.

Einloggen mit Benutzername, Passwort und Sitzungslänge
Erweiterte Suche  

Neuigkeiten:

Fehler und Spammer oder Probleme beim Login hier melden.

Seiten: 1 ... 22 23 [24] 25 26 ... 47

Autor Thema: Fragen zum Scripting  (Gelesen 204225 mal)

Firedroide

  • Newbie
  • *
  • Beiträge: 23
Re: Fragen zum Scripting
« Antwort #345 am: Juli 21, 2009, 15:57:37 Nachmittag »

Hallo zusammen.

Ich mache gerade eine Map mit einer grossen Menge Dialoge und Scripts in den Dialogen.
Mein Problem: Die Dialoge lassen sich einfach mit Escape oder Leertaste überspringen.
So werden Events nicht ausgelöst und es geht nicht mehr weiter...

Kann mir jemand sagen, wie ich das lösen kann?

Danke schon im Vorraus,
Firedroide
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Forenjob: Bugreporter!

nicht_mehr_Gast

  • Administrator
  • Newbie
  • *****
  • Beiträge: 328
Re: Fragen zum Scripting
« Antwort #346 am: Juli 21, 2009, 16:46:28 Nachmittag »

Was ich einmal im Zuge von Robinson ausprobiert habe, ist, durch einen Gebiets-Trigger den Dialog immer wieder zu öffnen, falls er vorher übersprungen wurde.

 Eventuell kann man den Spieler auch darauf hinweisen, dass der Dialogpartner so langsam wütend wird, weil er dauernd ignoriert wird, und nach dem zweiten Überspringen des Dialogs eine "Strafe" anbringen, wie zum Beispiel dass der NPC "die Löwen loslässt" oder seine Waffe herausholt und den Spieler mit Pfeilen abschießt und ihn somit aus dem Dorf jagt (das wäre je nach Situation anzupassen).

Wenn man ohne Gewalt auskommen möchte, bietet sich auch folgende Lösung an: Man erstellt eine "unsichtbare Wand", indem man ein passendes Objekt (z.B. die Höhlenwand) nimmt und so platziert, dass der Spieler nicht vorankommen kann. Erst, wenn der Dialog (der etwa alle zehn Sekunden aufgerufen wird) vollendet wurde, wird das unsichtbare Hindernis entfernt. Diese Methode kann jedoch je nach der abzusperrenden Fläche recht viele Hindernisse erfordern, die alle auch noch den State 17 (Unverwundbarkeit) und ein Script benötigen, das in etwa so aussieht (vllt. ist es auch noch unvollständig):

Code: (text) [Auswählen]
  1. on:start{
  2.    alpha 1;
  3. }
  4.  
  5. on:hit{ skipevent; }
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
CETERVM CENSEO CARTHARGINEM ESSE DELENDAM.

Firedroide

  • Newbie
  • *
  • Beiträge: 23
Re: Fragen zum Scripting
« Antwort #347 am: Juli 21, 2009, 16:53:19 Nachmittag »

Funktioniert so leider nicht, da der Dialog, den ich aufrufe, nur einmal aufgerufen wird, nach einer Sequenz. Da ich dort nicht wissen muss (und auch nicht weiss) wo der Spieler ist, kann ich auch keinen Gebiets-Trigger gebrauchen...

Ich hätte eher an eine Lösung gedacht, dass ein Key-Hit - Event nicht aufgerufen wird, dass es also global nicht mehr funktioniert.
Das Problem: Mit Escape ruft man auch das Inventar auf...

Grüsse,
Firedroide
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Forenjob: Bugreporter!

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
Timer-Problem
« Antwort #348 am: Oktober 11, 2009, 16:28:46 Nachmittag »

Möchte auch mal ein Problem haben; ich woltle ein logisches Entity, welches einen Timer bei sich selbst erstellt, sobald es geladen/erstellt wird und jede Sekunde die Uhrzeit auf bestimmte Konditionen hin prüft. Genaugenommen soll es 2 Events auslösen, den Anbruch der Nacht und den Sonnenaufgang. Während der Nacht sollen diese "seltsamen Kreaturen" an vorgesehenen Objekten gespawnt werden gespawnt werden(Ich denke dabei an einen Art "Alptraum"-Gamemode, in dem es tagsüber fiedlich ist und nachts die Party abgeht oO). Die Spawnpunkte funktionieren, der Timer aber nicht, das habe ich durch Ingame-Scripteingaben bereits eingekreist(Execute Script bei den Cheats...)

Hier erstmal die Codes.

[s2s:ox5jaac1]id=88
name=Alptraummodus-Timer
group=stuff
frame=49
description=start
Dieser Timer dient dem Alptraum-Gamemode. Ideallerweise existiert nur einer davon, denn er prüft jede Sekunde die Zeit.
Zudem mehrere unnötig sind.
description=end
script=start
   on:create {
      local $tmp;
      tmp$=currentid();
      timer "info",$tmp,1000,0;
      freevar $tmp;
   }
   on:timer {
      local $hour;
      $hour=hour();
      if($hour>21 || $hour<6) {
      event "spawncreeps","global";
      
      }
      if($hour>5 && $hour<7) {
      event "deletecreeps","global";
      }
   }
script=end[/s2s:ox5jaac1]

Das logische Entity und Sorgenkind meiner Frage. Wie man sieht, soll es zwischen 22 und 6 Uhr rund gehen. Wenn ich aber per "Execute Script" nicht nachhelfe, passiert nichts, und es gibt auch keinerlei Fehlermeldungen  :@
Die Null bei der Timer-Deklaration soll übrigens bewirken, dass der Timer unendlich oft läuft. Habe es auch einmal mit -1 probiert, selbes Ergebnis.

[s2s:ox5jaac1]id=201
name=Nachtschatten
icon=gfxroyal_flashicon_creature.bmp
model=gfxroyal_flashcreature.b3d
group=animal,ext
scale=2.25
colxr=10
colyr=20
behaviour=raptor
speed=1.5
turnspeed=1.8
eyes=10
health=400
range=300
attackrange=60
maxweight=25000
ani_move=2,6,0.20
ani_attack=7,12,0.2
ani_idle1=12,16,0.15
ani_idle2=16,22,0.15
ani_idle3=22,26,0.15
ani_die=26,35,0.5
#sfx=native
damage=0
param=damage,8
script=start
on:start {
   local $dmg,$tmp,$type;
   $tmp=currentid();
   $type=type("unit",$tmp);
   $dmg=defparam("unit",$type,"damage");
   freevar $tmp,$type;
}

on:create {
  event "start";
}

on:ai_attack {
   local $protection,$blocked,$shield;
   $shield=getplayerammo();
   if (playergotitem($shield)>0) {
      $protection=(defparam("item",$shield,"protection")/100.0);
   } else { $protection=0; }
   $blocked=($dmg*$protection);
   damage "unit",1,($dmg-$blocked);
   if ($protection>0) {
      echo "!4 Player is wearing a shield and blocked $blocked of $dmg damage";
      if (random(1,100)==1) {
         msg "Mist! Mein Schild ist zerbrochen!",3,5000;
              freestored "unit",1,$shield,1;
      }
   }
   freevar $protection,$blocked,$shield;
}

on:kill {
   local $tmp;
   $tmp=currentid();
   setpos "unit",$tmp,0,0,0;
   freevar $tmp;
}
on:deletecreeps {
   local $tmp;
   $tmp=currentid();
   corona 0,0,30,75,25,10,$tmp;
   freevar $tmp;
}
script=end[/s2s:ox5jaac1]

(Die Nachtschatten sind, wie gesagt, adaptierte Versionen der "seltsamen Kreatur", aber sie funktionieren etwas anders, wieso ich die poste, sage ich später nochmal)

[s2s:ox5jaac1]id=944
name=Creep-Spawner
icon=gfxmarble01.bmp
group=stuff,std
model=gfxmarble01.b3d
scale=0.7
healthchange=0
mat=stone
script=start
   on:spawncreeps {
      local $x,$y,$spreadx,$spready,$creeps,$maxcreeps,$active;
      $x=getx("self");
      $y=gety("self");
      $spreadx=random(-10,10);
      $spready=random(-10,10);
      $x=$x+$spreadx;
      $y=$y+$spready;
      $creeps=count("unit",201);
      $maxcreeps=(count("object",944) * 2);
      if ($creeps < $maxcreeps) {
         $active=create("unit",201,$x,$y);
      }
      corona 0,0,30,25,25,75,$active;
   }
script=end[/s2s:ox5jaac1]

Der Creep-Spawner, duh. Momentan soll es maximal 2 Creeps pro Spawner geben, aber wenn die alle gleichzeitig agieren, können sie teilweise über das Ziel hinaus schießen. Das ist aber erstmals nicht das Problem, sondern der Timer, der einfahc nicht startet.

Noch ein weiteres Problem, was ich bereits angedeutet habe: Beim Spawnen und Sterben sollen die Creeps einen Corona-Effekt auslösen. Leider habe ich bisher nicht viel davon gesehen.... =/ (Mit anderen Worten, er erscheint einfach nicht)

mfG
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

dragoana

  • Newbie
  • *
  • Beiträge: 46
Re: Fragen zum Scripting
« Antwort #349 am: Oktober 11, 2009, 17:35:52 Nachmittag »

Ich glaube du brauchst in deinem Albtraummodus-Timer ein on:start event mit dem selben Inhalt wie on:create. Falls du den Timer schon im Editor platzierst, wird beim Laden der Insel nämlich nur on:start ausgeführt. Wenn der Timer zur Laufzeit gespawnt oder irgendwie sonst durch ein Script erstellt wird, wird on:create ausgeführt.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Schnapsidee von dragoana.

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
D'oh
« Antwort #350 am: Oktober 12, 2009, 16:35:51 Nachmittag »

Ah, ja...hatte schon befürchtet, dass on:create nur unter bestimmten Konditonen abgerufen wird... :S
Der Timer selbst läuft jetzt, die Corona-Effekte habe ich auch behoben(Habe die Geschwindigkeit vergessen >.<)
Blöderweise scheint der Timer jetzt die Bedinungen zu ignorieren und führt einfahc beide Events aus, und die Corona-Balken sind auch nicht an ihrem Platz...bei dem der "gestorbenen" kann ich es mir denken, aber bei die der lebenden Creeps erscheint auch einfach bei dei dem vorhergehenden gestorbenen Creep....
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

dragoana

  • Newbie
  • *
  • Beiträge: 46
Re: Fragen zum Scripting
« Antwort #351 am: Oktober 12, 2009, 18:03:22 Nachmittag »

So ließ sich der Fehler beheben, dass der Albtraum-Timer beide Events ausführt:
Code: (text) [Auswählen]
  1. $hour=hour();
  2. if(($hour>5) && ($hour<7)) {
  3. event "deletecreeps","global";
  4. }
  5. if(($hour<6) || ($hour>21)) {
  6. event "spawncreeps","global";
  7. }
Das solltest du vorerst testen, denn dann verhalten sich die Scripts der Creeps anders.

Übrigens, bei solchen Strukturen:
Code: (text) [Auswählen]
  1. on:kill {
  2. local $tmp;
  3. $tmp=currentid();
  4. setpos "unit",$tmp,0,0,0;
  5. freevar $tmp;
  6. }
funktionier afaik vereinfacht auch dies:
Code: (text) [Auswählen]
  1. on:kill { setpos "unit",currentid(),0,0,0; }
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Schnapsidee von dragoana.

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
Problem schon gefunden
« Antwort #352 am: Oktober 12, 2009, 22:56:07 Nachmittag »

Danke für deine Hilfe, habe inzwischen auch selbst rausgefunden, dass die Klammern fehlten. Wollte ich eigentlich vorher posten, bevor sich jemand die Mühe macht, aber Doppelposts sind nicht erlaubt und das Forum quält mich übermüdeten Wicht bei der Registrierung mit unleerlichen Bestätigungscodes... ._.
Habe aber den Fehler mit den Corona-Balken gefunden: Ich gab 0|0 als Coords ein in der Annahme, durch die Unit-ID werden sie ohnehin darauf zentriert. Pustekuchen, die Balken bewegen sich relativ von den gegeben Coords aus mit der Unit. Darauf muss man erstmal auf der furzigen kleinen Testinsel, die mit widerspinstig nicht verschwindenen Creep-Leichen übersäht ist... :@
Naja, sollte mit den Coords des Creeps funzen. Bemerke: Sollte! Ich melde mich wieder bei Ergebnissen...
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Cannonfodder

  • Newbie
  • *
  • Beiträge: 1
@_@
« Antwort #353 am: Oktober 12, 2009, 23:12:48 Nachmittag »

So, endlich mal drin...ziemlich frustrierend, sein PW zu vergessen und gleichzeitig den magischen "Ich habe mein Passwort vergessen"-Link nicht zu finden.
Einige Pferde zurück, die Leichen werden sachgemäß auf 0,0,0 abgelegt...was mitten auf der Insel ist. Ist aber ein kosmetischer Fehler. Die Balken beim Spawnen sind versetzt, aber das lässt sich bestimmt noch ausbügeln...
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Mapjunkeee

  • Newbie
  • *
  • Beiträge: 5
skript hilfe
« Antwort #354 am: Oktober 22, 2009, 00:41:43 Vormittag »

Hallo :wink:  kann mir jemand beim skripten helfen bin in Map bauen 1-2 und im skripten ne 6 ^^u

1. wie schreibe ich ein Skript um schilder lesen zu können.
2.wie schreibe ich ein Skipt in denn menschen mit mir reden,interagierten usw..
und 3. wie schreibe ich ein Skript um eine quest zu erstellen


wäre froh wenn jemand detailiert das schreibt
thx eurer MapJunkeee o_O
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Wer lesen kann ist klar im vorteil

Mapjunkeee

  • Newbie
  • *
  • Beiträge: 5
Re: Fragen zum Scripting
« Antwort #355 am: Oktober 22, 2009, 16:18:47 Nachmittag »

ein thx an quester

(weiß nicht ob das hier reingehört) }:?
vorschlag für Skills:Heilen

Beschreibung:immer wenn man Bruch oder blutung heilt oder heiltrank braut bekommt man 1 punkt in Heilen


-50 man kann aus 5 wolle oder schnüre Verbände herstellen

-100  man kann aus 1 eisenstange  3 Verbänden und 5schnüren einen Erste Hilfe Koffer herstellen

_150 man kann aus 3 heilblättern oder 1starkes heilblatt  und einer flasche wasser einen Heiltrank herstellen

-200 eisenkörper:du hast schon so viele bruche und blutungen gehabt das dein Körper um25% weniger blutet oder bricht

-800 dein Körper ist fast unverwundbar (75%) :fool:

wäre froh auf Kritik/Verbesserungen

euer Mapjunkeee
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Wer lesen kann ist klar im vorteil

Mapjunkeee

  • Newbie
  • *
  • Beiträge: 5
Re: Fragen zum Scripting
« Antwort #356 am: Oktober 22, 2009, 17:43:02 Nachmittag »

^^u  Noch mal ich

hab prob. mit gebiet-trigger
Code: (text) [Auswählen]
  1. on:trigger    {diary "Im Wasser" ,"Da ist was im Wasser"}

ich hab radius 100 und anzahl 1

aber immer wenn ich starte kommt der sofort und wiederholt sich 1000 fach  :cry_fox:
was mache ich falsch }:?
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Wer lesen kann ist klar im vorteil

Mapjunkeee

  • Newbie
  • *
  • Beiträge: 5
Re: Fragen zum Scripting
« Antwort #357 am: Oktober 22, 2009, 19:39:28 Nachmittag »

hat sich nichts verändert :cry_fox:
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Wer lesen kann ist klar im vorteil

Mapjunkeee

  • Newbie
  • *
  • Beiträge: 5
Re: Fragen zum Scripting
« Antwort #358 am: Oktober 23, 2009, 11:13:54 Vormittag »

^^u  ^^u  ^^u
nein vergessen xD
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Wer lesen kann ist klar im vorteil

MrMatthew

  • Newbie
  • *
  • Beiträge: 217
Re: Fragen zum Scripting
« Antwort #359 am: November 01, 2009, 12:44:00 Nachmittag »

Ich hab 2 Fragen ...
1.
Ist es möglich, zu prüfen ob der Spieler gar kein Item bei sich hat? Ich dachte da an eine Loop-Funktion, die für jede ID der Items prüft, ob der Spieler was davon bei sich trägt, aber vielleicht geht das ja einfacher? Ansonsten, wie schreib ich dann so einen Loop?  ^^u

2.
Diese Frage geht wohl vor allem an McLeaf: Wie hast du nur son scheenes Haus wie in der Demo-Map hinbekommen?
Gibt es dafür auch spezielle Platzierungsscripts? Bisher kenn ich nur die vom Dungeon, die ja die Felder und Wände zentriert in der Mitte am Raster der Karte festmachen, aber bei nem Haus (vor allem mit mehreren Stockwerken...) ist das ja ein wenig ungünstig... Wie hast du das nur gemacht?  :D
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Seiten: 1 ... 22 23 [24] 25 26 ... 47