Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 22.04.2004, 12:37 Titel: |
|
|
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 22.04.2004, 12:59 Titel: |
|
|
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 |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 09.06.2004, 21:21 Titel: |
|
|
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  |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.06.2004, 14:30 Titel: |
|
|
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 |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 20.06.2004, 20:00 Titel: |
|
|
Wie verwaltet ihr eigentlich Lua???
In einer Klasse oder anders??? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.06.2004, 08:45 Titel: |
|
|
Ich hab eine Lua Klasse die alle Lua Threads verwaltet(für Coroutinen). _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 21.06.2004, 09:24 Titel: |
|
|
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 |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 21.06.2004, 11:29 Titel: |
|
|
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.06.2004, 12:18 Titel: |
|
|
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 |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 21.06.2004, 12:23 Titel: |
|
|
danke du hast mir damit sehr geholfen  |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 25.06.2004, 11:09 Titel: |
|
|
Gibs auch buecher ueber LUA die in deutsch sind  |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 25.06.2004, 12:53 Titel: |
|
|
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.06.2004, 13:10 Titel: |
|
|
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.06.2004, 13:12 Titel: |
|
|
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 |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 25.06.2004, 13:13 Titel: |
|
|
Naja, ich wusste nich wie ich anders eine coroutine von nem C++programm aus erstellen kann...
[EDIT] Ok, danke werd mir dann mal threads anschaun^^ |
|
Nach oben |
|
 |
|