JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Lua 5
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> News
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 22.04.2004, 12:37    Titel: Antworten mit Zitat

naja wie gesagt muss diese datei mit lua_dofile(...) noch einmal gestartet werden damit die Klasse bekannt gemacht wird.

Das schwierige daran is ja nur das man die Klasse in der engine exportieren muss durch Wrapperklassen. Ansonsten isses recht einfach bis eben noch auf die coroutines.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 22.04.2004, 12:59    Titel: Antworten mit Zitat

Die Coroutinen finde ich persönlich eigentlich sehr einfach und praktisch. Man muss nur halt extrem aufpassen, dass man korrekt mit dem Stack arbeitet. :)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 36
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 09.06.2004, 21:21    Titel: Antworten mit Zitat

Ich hab mich nun seit längerem mal wieder mit LUA beschäftigt und bin dabei auf ein interessantes Tutorial gestoßen, das recht einfach erklärt wie man LUA-Funktionen von einem C++-Programm aufruft und andersrum. Außerdem kann man sich hier gut mit LUA an sich vertraut machen. Was mir noch nicht ganz klar ist, ist wozu man coroutines braucht bzw. was das überhaupt genau ist, allerdings habe ich mich damit auch so gut wie noch gar nicht beschäftigt, muss ich mal in der doku oder bei dem einen link von hazel nachlesen..^^

wenn die links schon irgendwo gepostet wurden: sorry, hab sie nicht gefunden... ich fand sie nur fein, weil genau das erklärt wird, was mich im moment interessiert Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.06.2004, 14:30    Titel: Antworten mit Zitat

Coroutinen sind Funktionen, die in einem eigenen Lua Thread laufen. Man kann sie an einer Stelle stoppen und später da wieder weiterlaufen lassen. Such mal nach yield/resume.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Samus_Aran
JLI'ler


Alter: 37
Anmeldedatum: 12.05.2004
Beiträge: 183
Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau
Medaillen: Keine

BeitragVerfasst am: 20.06.2004, 20:00    Titel: Antworten mit Zitat

Wie verwaltet ihr eigentlich Lua???
In einer Klasse oder anders???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 08:45    Titel: Antworten mit Zitat

Ich hab eine Lua Klasse die alle Lua Threads verwaltet(für Coroutinen).
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 21.06.2004, 09:24    Titel: Antworten mit Zitat

Ich denke LUA sollte auch ins FAQ, oder zumindest ein Sticky.

immerhin ist es eine der wichtigsten Sprachen geworden.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Samus_Aran
JLI'ler


Alter: 37
Anmeldedatum: 12.05.2004
Beiträge: 183
Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau
Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 11:29    Titel: Antworten mit Zitat

hazel kannst du mir bitte da mal n auszug von deiner klasse zeigen (Den header wenns geht) hab nämlich das problem das er bei mir den lua_State definierten teil (bei mir heist des ding Script) 2 mal erkennt und weis was es is und bei
Code:
Script = lua_open();

kennt ers nich mehr und fragt mich was des Script sein soll
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 12:18    Titel: Antworten mit Zitat

Klar, gern

Code:

#pragma once

#include <mylua.h>
#include <list>
#include <string>
#include <algorithm>

class CLua
{
public:

   // Struktur die einen Thread und den letzten Rückgabewert speichert
   struct lua_thread
   {
      lua_State * state;
      int ret;
   };

private:

   // Functor, der einen Thread resume't und anschließend den Rückgabewert speichert
   struct resume_thread
   {
      void operator()(lua_thread & p)
      {
         lua_resume(p.state, 0);
         p.ret = lua_tonumber(p.state, -1);
         lua_pop(p.state, 1);
      }
   };

   // Functor, der überprüft, ob der Rückgabewert gleich 'checkval' ist
   struct thread_ret_equal
   {
      int check_val;

      // Konstruktor
      thread_ret_equal(int n) : check_val(n) {}
      
      bool operator()(lua_thread & p)
      {
         if(p.ret == check_val)
            return true;
         
         return false;
      }
   };

   // Liste mit laufenden Threads
   list<lua_thread> m_Threads;

   // Das Lua-Hauptobjekt
   lua_State * m_Lua;
   
public:

   void Open(bool loadbase = true);
   void Close();
   void DoFile(std::string file);
   void CreateCoroutine(std::string func);
   void ResumeCoroutines();

   lua_State * GetLua() { return m_Lua; }
   std::list<lua_thread> & GetThreads() { return m_Threads; }
};

_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Samus_Aran
JLI'ler


Alter: 37
Anmeldedatum: 12.05.2004
Beiträge: 183
Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau
Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 12:23    Titel: Antworten mit Zitat

danke du hast mir damit sehr geholfen Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 25.06.2004, 11:09    Titel: Antworten mit Zitat

Gibs auch buecher ueber LUA die in deutsch sind Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Hasenfuß
Senior JLI'ler


Alter: 36
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 25.06.2004, 12:53    Titel: Antworten mit Zitat

Soweit ich weiß nich, hab jedenfalls noch keine gefunden.

Aber mal ne andere Frage:

Warum kann ich so keine coroutine erstellen?:

Script:
Code:

function create_coroutine(func)
   co = coroutine.create(func)
end


Im Programm:
Code:

lua_getglobal(L,"create_coroutine");
lua_pushstring(L,"xyz");
lua_call(L,1,0);
lua_pop(L,1);


xyz ist eine funktion die im Script implementiert ist und wenn ich bei coroutine.create anstatt des parameters auch den namen, xyz, angebe, funktioniert es, aber über parameter scheint es nich zu gehn.. warum?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 25.06.2004, 13:10    Titel: Antworten mit Zitat

Was willst du damit überhaupt erreichen? Warum willst du eine Funktion schreiben die nix weiter tut als eine Funktion aufzurufen?
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 25.06.2004, 13:12    Titel: Antworten mit Zitat

Wenn du vom C Code aus eine Coroutine erstellen willst brauchst du ersteinmal einen Lua Thread dazu. In diesem Thread führst du die Funktion aus und kannst sie mit lua_resume und lua_yield verwalten.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 36
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 25.06.2004, 13:13    Titel: Antworten mit Zitat

Naja, ich wusste nich wie ich anders eine coroutine von nem C++programm aus erstellen kann...

[EDIT] Ok, danke Smile werd mir dann mal threads anschaun^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> News Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
Seite 3 von 4

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum