Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 14:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Guide] C++ Programmierung mit Lua 5.1

Discussion on [Guide] C++ Programmierung mit Lua 5.1 within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2009
Posts: 21
Received Thanks: 4
[Guide] C++ Programmierung mit Lua 5.1

Achtung dieser TUT ist aus m m o r p g - c o r e.
Da ich dort mit Chaosduckman ein und die selbe Person bin sollte das klar gehen.

Hi^^
Ich weiß das es für dieses Thema sehr viele Guides in google gibt, aber ich wollte mal eins zu elitepvpers bringen. Da das hier mein erster Guide ist freue ich mich über Feedback und Verbesserungs Vorschläge :-)

Aber nun fangen wir an:

1. History and Informations
1-1 Was ist Lua?
1-2 Warum ist es besonders für uns praktisch?

2. Das berühmte Hello World Programm
2-1 Die Header Dateien
2-2 Das Grundgerüst
2-3 Die Erweiterung
2-4 Das Finale

3. Der Funktionsaufruf
3-1 Warum Aufrufen?
3-2 Der Code

4. Von Stacks, Variablen und Schiebungen
4-1 Wer oder Was ist der "Stack"?!
4-2 Wieso brauchen wir das?
4-3 Den Stack auslesen
4-4 Werte zurück geben
4-5 Der Abschluss

5. Links und Quellen


1. History and Informations

1-1) Was ist Lua?
Lua ist eine Skriptsprache zur Einbindung in Programmen um diese leichter Warten zu können. Sie wurde 1993 von der Computer Graphics Technology Group der Päpstlichen Katholischen Universität in Rio de Janeiro entwickelt. Lua ist eine freie Software und kann damit kostenlos genutzt werden. Außerdem ist sie Platform unabhängig, was ihr viele Pluspunkte einbringt. Man kann zwar mit Lua ein eigenes Programm schreiben nur wird sie meistens als Zusatz für C/C++ Programme verwendet. Oft auch in Spielen.

1-2) Warum ist es besonders für uns praktisch?
Wir können dort Programm Abschnitte auslagern und ändern ohne das Programm neu kompilieren zu müssen. Das bietet sich besonders für Plugins oder Konfigurationsdateien an. Glücklicherweise haben uns die Lua Programmierer eigene Header Datein zu Verfügung gestellt. Damit ist ein perfektes Zusammenspiel von C/C++ und Lua möglich.

2. Das berühmte Hello World Programm

2-1 Die Header Dateien
So nun wird es ernst. Wie bei jedem guten Programm fangen wir mit den Header Dateien an. (Die Header Dateien kannst du bei den Links runterladen) Nach dem wir die exe installiert haben, gehen wir in den Installations Ordner und kopieren den Inhalt von Include in deinen Projekt Ordner. Solltest du nicht mit VC++ arbeiten, musst du die Header in den selben Ordner kopieren wie deine .cpp, in der du die Header Included hast. Es gibt 3 Dateien mit denen wir Arbeiten werden:

Code:
- lua.h       //Hier stehen die Funktionen für das Grundgerüst drin.
- lualib.h    //Hier die standart libraries.
- lauxlib.h  //Und hier die verschiedenen Script Funktionen (z.B. Für das Ausführen des Scripts in C++)
Da diese alle in C geschrieben sind, müssen wir das dem Compiler mitteilen. Das machen wir so:
Code:
extern "C"
{

}
Dort kommen alle unsere Lua Header Dateien rein. Also:
Code:
extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}
Damit der Compiler eure Header laden kann, müssen sich diese im selben Ordner befinden wie euer Projekt. Vergesst das nicht ;-)

2-2 Das Grundgerüst
Nun da wir die Funktionen der Header Dateien kennen und diese auch erfolgreich eingebunden haben kann es jetzt weiter gehen. Und zwar mit dem Grundgerüst für euer C++ Programm. Diese sehen wie folgt aus:
Code:
//Wir brauchen zu erst eine Instanz. Diese erstellen wir mit 
lua_State* Irgend_ein_Name;

//Diese muss ja auch initialisiert werden. Das passiert mit
Irgend_ein_Name = lua_open();

//Und zum Abschluss der Befehl der die Instanz wieder frei gibt.
lua_close(Irgend_ein_Name);
Nun fügen wird das noch unserem Quellcode an:
Code:
extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int main()
{
    lua_State* Irgend_ein_Name;  //Das Erstellen
    Irgend_ein_Name = lua_open();  //Das Initialisieren


    
    lua_close(Irgend_ein_Name);  //Das Freigeben
    return 0;
}
Gut. Nun steht unser Grundgerüst :-)

2-3 Die Erweiterung
Wie du siehst kommen wir dem Ergebnis langsam näher. Jetzt werde ich dir die Befehle zeigen, mit denen du die lua Datein ausführe kannst. Also ab zu Reference:
Code:
//Nun müssen wir festlegen was wir mit der lua Datei machen wollen. Wenn du einen einfachen Code ausführen willst reicht diese Bibliothek:
luaopen_base(Irgend_ein_Name);
//Das heißt nicht das es nicht noch mehr gibt. Es gibt noch:
luaopen_string(Irgend_ein_Name);
luaopen_table(Irgend_ein_Name);
luaopen_math(Irgend_ein_Name);
luaopen_debug(Irgend_ein_Name);

//So nun kommt der wohl wichtigste Befehl:
luaL_dofile(Irgend_ein_Name, "Meine Lua.lua");
//Jeder der ein bisschen Englisch versteht sollte wissen was das heißt aber ich sage es gerne trotzdem. Dieser Befehl führt die angegebene Lua Datei aus. In diesem Fall Meine Lua.lua
Jetzt wir kommen auf die Zielgerade :-) Nur noch schnell den Code in die Quelldatei.
Code:
extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int main()
{
    lua_State* Irgend_ein_Name;  //Das Erstellen
    Irgend_ein_Name = lua_open();  //Das Initialisieren


    luaopen_base(Irgend_ein_Name);  //Die Bibliothek
    luaL_dofile(Irgend_ein_Name, "Meine Lua.lua" );  //Der Ausführen Befehl

    
    lua_close(Irgend_ein_Name);  //Das Freigeben
    return 0;
}
2-4 Das Finale
Wir haben so lange gewartet (max. 10 min) und jetzt ist er da. Endlich das Finale ;-) Der Code in unserer .cpp Datei ist nun so gut wie Fertig. Jetzt kümmern wir uns noch um die lua und schmücken den Quellcode der .cpp noch ein bisschen aus. Also reden wir mal nicht um den heißen Brei herrum sondern fangen gleich an :-) Für die lua ist der Code denkbar einfach:
Code:
––Das gibt einfach nur Hello World aus ;-) Lua Befehle müssen nicht mit einem Semikolon abgeschlossen werden. Ich mache das aber sieht besser aus ;-)––
print "Hello World";
Nun das in eine txt Datei schreiben. Diese umbenennen in "Meine Lua.lua" und fertig ;-) Kommen wir noch zu unserem cpp Quellcode.
Man muss es nicht ändern der Code funktioniert auch so, aber ich schreibe es trozdem mal rein^^
Code:
[COLOR="Red"]#include <iostream> [/COLOR]//Siehe unten

extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int main()
{
    lua_State* Irgend_ein_Name [COLOR="Red"]= NULL[/COLOR];  //Damit durch den Speicher keine Fehler kommen können.
    Irgend_ein_Name = lua_open();  //Das Initialisieren


    luaopen_base(Irgend_ein_Name);  //Die Bibliothek
    luaL_dofile(Irgend_ein_Name, "Meine Lua.lua" );  //Der Ausführen Befehl

    
    lua_close(Irgend_ein_Name);  //Das Freigeben

    [COLOR="Red"]std::cin.get();[/COLOR] //Damit wir den Hello World Schriftzug auch bestaunen können ;-)
    return 0;
}
Nach dem ihr den Code geändet habt (oder auch nicht^^) drückt ihr einfach F5 oder eure Taste zum kompilieren wartet während Fehler gesucht werden (Die hoffentlich nicht kommen^^ Ihr könnt sie gerne Posten...) und bestaunt den Schriftzug in eurer Konsole. Der zweite Teil des Guides ist jetzt hier zu Ende ich hoffe ihr habt die 10 min eures Lebens nicht vergeudet und hattet Spaß. Tja dann noch Have Fun at elitepvpers ;-)

3. Der Funktionsaufruf

3-1 Warum Aufrufen?
Das Aufrufen von Funktionen ist eine feine Sache. Damit können wir z.B. fast den kompletten Programm Code auslagern und ändern ohne das Programm neu kompilieren. Oder wir liefern ein Programm aus, das sehr individuell eingestellt werden muss. Das Funktioniert alles mit dieser Sprache ;-)

3-2 Der Code
Da wir nun schon die Grundkentnisse von Lua in C/C++ kennen, wird dieser Abschnitt nicht mehr so lang. Aber lets so ;-) Zu erst brauchen wir eine Funktion in unserem cpp Code:
Code:
int Lua_Funktion(lua_State* Irgend_ein_Name)
{
  std::cout << "Wenn du das lesen kannst, dann hast du eine Funktion aufgerufen :-)\n";
  return 0;
}
Wie du siehst brauchen wir (wie auch sonst so gut wie immer) eine Instanz. Diese kommt in den Parameter der Funktion. Wir geben einen Integer Wert zurück. Dieser Wert gibt die Anzahl der Parameter zurück, die wir in den Lua-Stack (später) geschoben haben. In diesem Fall 0. Und nicht vergessen: Diese Funktion wird von der main() Funktion aufgerufen. Also vor die main() Funktion schreiben ;-)
Jetzt kommen 2 neue Befehle.
Code:
//Mit dieser Funktion pushen wir die Funktion auf den Lua-Stack. Die Null steht für den return Wert (steht oben). Aber dazu später mehr.
lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
//Damit geben wir der gepushten Funktion (oben) einen Namen für den Stack. In diesem Fall TestFunktion.
lua_setglobal(Irgend_ein_Name, "TestFunktion");
Sooo jetzt noch schnell das ganze in unseren Quellcode und es kann los gehen.
Code:
#include <iostream>

extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int Lua_Funktion(lua_State* Irgend_ein_Name)
{
  std::cout << "Wenn du das lesen kannst, dann hast du eine Funktion aufgerufen :-)\n";
  return 0;
}

int main()
{
    lua_State* Irgend_ein_Name = NULL;
    Irgend_ein_Name = lua_open();

    luaopen_base(Irgend_ein_Name);

    lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
    lua_setglobal(Irgend_ein_Name, "TestFunktion");

    luaL_dofile(Irgend_ein_Name, "Meine Lua.lua" );
    lua_close(Irgend_ein_Name);

    std::cin.get();
    return 0;
}
So unsere .cpp ist fertig. 50% geschafft^^ Jetzt kommt noch die Lua. Wie auch vohrer extrem einfach ;-)
Code:
//Wir rufen eine Funktion auf:
TestFunktion();
//Hier muss immer der lua_setglobal() Name angegeben werden. Also nicht vergessen ;-)
So damit währen wir hier fertig. Kompilieren und String ansehen^^ Ich weiß das dir der Funktionsaufruf noch nicht ganz klar ist aber wenn du den nächsten Abschnitt gelesen hast wird er dir klar sein :-)

4. Von Stacks, Variablen und Schiebungen

4-1 Wer oder Was ist der "Stack"?!
Diese Frage habe ich mir bis heute morgen auch gestellt. Aber nun habe ich eine Antwort^^ Der Stack (Auch Stapelspeicher oder Kellerspeicher genannt) ist ein bestimmter Speicherbereich der Objekte aufnehmen kann. Dabei gibt es ein bestimmtes Verfahren wie der Stack beschrieben oder entleert wird. Das Last In – First Out-Prinzip. Stelle dir einfach mal einen Stapel Bücher vor. Diese liegen übereinander. Jetzt kommt der Befehl push. Nun nimmst du ein neues Buch und legst es oben auf den Stapel. Jetzt ist der Befehl zu Ende. Danach kommt der Befehl pop. Jetzt nimmst du das oberste Buch wieder runter und liest es :P So funktioniert das System. Was noch wichtig ist, das du nur auf das oberste Objekt zugreifen kannst. Das kümmert uns aber wenig ;-)

4-2 Wieso brauchen wir das?
Nur durch den Stack können C/C++ und Lua zusammenarbeiten. Die Funktion die wir vohrer erstellt haben wurde auch in den Stack geschrieben. Auch Variablen werde vom Stack geholt. Also stelle dich darauf ein mit dem Stack zu arbeiten.

4-3 Den Stack auslesen
Unser erstes Programm in dieser Sektion wird ein auslese Programm sein. Dazu werde ich dir erstmal die Befehle näher bringen:
Code:
//Bei diesem Baby wird dir die Anzahl der Parameter auf dem Stack ausgegeben.
lua_gettop(Irgend_ein_Name);
//Damit Befreit man den Stack von den Parametern
lua_pop(Irgend_ein_Name, lua_gettop(Irgend_ein_Name) );
//Hiermit überprüft man die Gültigkeit eines Parameters
lua_isnil(Irgend_ein_Name, -StackNummer);
//Mit dieser Funktion kann man Parameter in Strings umwandeln
lua_tostring(Irgend_ein_Name, StackNummer);
So jetzt kommen wir zu unserem ersten Test Programm. Damit lesen wir den Stack aus. Das ist der Code für die .cpp Datei.
Code:
#include <iostream>

extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int Lua_Funktion(lua_State* Irgend_ein_Name)
{
     int ParameterAnzahl = lua_gettop(Irgend_ein_Name);
     std::cout << "Es gibt " << ParameterAnzahl << " Parameter" << "\n";

     while(ParameterAnzahl)
     {
          std::string   Parameter = "";
          if(!lua_isnil(Irgend_ein_Name, -ParameterAnzahl) )
          {
                Parameter = lua_tostring(Irgend_ein_Name, -ParameterAnzahl );
                std::cout << "Parameter:" << Parameter.c_str() << "\n";
          }
           --ParameterAnzahl;
     }
     lua_pop(Irgend_ein_Name, lua_gettop(Irgend_ein_Name) );
     return 0;
}

int main()
{
    lua_State* Irgend_ein_Name = NULL;
    Irgend_ein_Name = lua_open();

    luaopen_base(Irgend_ein_Name);

    lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
    lua_setglobal(Irgend_ein_Name, "TestFunktion");

    luaL_dofile(Irgend_ein_Name, "Meine Lua.lua" );
    lua_close(Irgend_ein_Name);

    std::cin.get();
    return 0;
}
Jetzt kommt der Code für die lua Datei.
Code:
TestFunktion("Hahaha SPAMM", 12, "Ich bin der beste :P");
Soooooo Kompiliere und fertig^^ Unser Testprogramm ist/war ein voller Erfolg xD Ab zur nächsten Sektion. Da gehts dann mal richtig zur Sache ;-)

4-4 Werte zurück geben
Das wird unsere letzte Sektion sein, in der wir etwas Sinnvolles machen^^ Also genieße es xD Jetzt lernen wir, wie wir einen Rückgabewert einfädeln. Also pass gut auf ;-) Fangen wir wie immer mit den neuen Funktionen an:
Code:
//Für Strings nehmen wir
lua_pushstring(Irgend_ein_Name, "Hier dein String");
//Für Zahlen aller Art 
lua_pushnumber(Irgend_ein_Name, 12);
//Es gibt noch mehr Typen (z.B. boolean also true oder false) aber auf die werde ich nicht eingeben, da man mit den oben genannten so gut wie alles machen kann
Was das war es schon?! Tja ich fürchte ja. Also schnell zur .cpp ;-)
Code:
#include <iostream>

extern "C"
{
  #include "lua.h"
  #include "lualib.h"
  #include "lauxlib.h"
}

int Lua_Funktion(lua_State* Irgend_ein_Name)
{
  lua_pushstring(Irgend_ein_Name, "ACHTUNG!!! Das ist ein Test!!!" );
  lua_pushnumber(Irgend_ein_Name, 12 );

  return 2; //Da wir 2 Sachen auf den Stack pushen. Wir erinnern uns return gibt die Anzahl der Objekte an die auf den Stack gepusht werden ;-)
}

int main()
{
    lua_State* Irgend_ein_Name = NULL;
    Irgend_ein_Name = lua_open();

    luaopen_base(Irgend_ein_Name);

    lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
    lua_setglobal(Irgend_ein_Name, "TestFunktion");

    luaL_dofile(Irgend_ein_Name, "Meine Lua.lua" );
    lua_close(Irgend_ein_Name);

    std::cin.get();
    return 0;
}
Jetzt noch die lua und dan ist finish ;-)
Code:
Wert1, Wert2 = TestFunktion();  ––Damit das Script weiß woher die Werte kommen––
print( "Wert1: ", Wert1 );  ––Einfach zum ausgeben––
print( "Wert2: ", Wert2 );
Sooooo F5 oder deine Taste halt :P Genieße das Wissen was du in den letzten Minuten gewonnen hast ;-)

4-5 Der Abschluss
So jetzt noch eine Checkliste was du können solltest :P

:check: Ich kann mit C++ Lua Code in einer Lua Datei ausführen.
:check: Ich kann C++ Funktionen mit einer Lua Datei ausführen.
:check: Ich kann Parameter zwischen den verschieden Sprachen tauschen.

Wenn du das kannst war mein Guide ein voller Erfolg :-)
Solltes du Fragen, Anregungen oder etwas einfach nicht verstanden haben verwende deine Fähigkeit einen Post zu machen ;-)
Sonst noch viel Spaß bei elitepvpers

5. Links und Quellen


Lua Wikipedia
Stack Wikipedia

Chaosduckman is offline  
Thanks
4 Users
Old 06/27/2010, 22:52   #2
 
Like a Spark's Avatar
 
elite*gold: 1
Join Date: Mar 2010
Posts: 1,960
Received Thanks: 527
Gutes tut griegst ein thx
Like a Spark is offline  
Old 06/28/2010, 16:21   #3
 
elite*gold: 0
Join Date: Sep 2009
Posts: 21
Received Thanks: 4
Danke :-)
Will sonst noch jemand etwas über den Guide schreiben?
Chaosduckman is offline  
Old 10/08/2010, 15:11   #4
 
elite*gold: 0
Join Date: Oct 2010
Posts: 1
Received Thanks: 0
Von mir auch ein großes Danke
isonorr is offline  
Old 10/08/2010, 22:02   #5
 
|R.o.x|'s Avatar
 
elite*gold: 164
Join Date: Feb 2010
Posts: 1,130
Received Thanks: 1,025
Nicht schlecht, nur hätte ich noch ein Programm damit geschrieben damit man es visualisieren kann und dann die Source hier veröffentlicht und einen Screenshot davon
|R.o.x| is offline  
Old 10/09/2010, 17:43   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Danke, ich wollte schon immer mal wissen, wie man Lua in seine Programme einbindet
Ein bisschen viele "^^" aber gutes Tutorial.

Quote:
-ParameterAnzahl)
Aber was soll das "-" bei lua_isnil und lua_tostring?
Soll das --ParameterAnzahl (was aber keinen Sinn machen würde o.ô) sein oder ist das ein mehrmals auftretender Tippfehler?

Ach ja und
Quote:
//Mit dieser Funktion pushen wir die Funktion auf den Lua-Stack. Die Null steht für den return Wert (steht oben). Aber dazu später mehr.
lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
Aber später pushst du zwei Werte:
Code:
int Lua_Funktion(lua_State* Irgend_ein_Name)
{
  lua_pushstring(Irgend_ein_Name, "ACHTUNG!!! Das ist ein Test!!!" );
  lua_pushnumber(Irgend_ein_Name, 12 );

  return 2; //Da wir 2 Sachen auf den Stack pushen. Wir erinnern uns return gibt die Anzahl der Objekte an die auf den Stack gepusht werden ;-)
}
Aber es bleibt
Quote:
lua_pushcclosure(Irgend_ein_Name, Lua_Funktion,0);
Ich dachte die 0 im letzten Parameter steht für die Werte, die auf den Stack gepusht werden, genau wie der return Wert o.ô
Hab ich da was missverstanden?
MrSm!th is offline  
Old 05/08/2011, 21:02   #7
 
elite*gold: 0
Join Date: Apr 2006
Posts: 6,597
Received Thanks: 1,830
schon dreist wie du ein tutorial rippst und keine quellen angibst sondern nur die namen der variablen änderst.

Medix is offline  
Thanks
1 User
Old 05/09/2011, 00:32   #8
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Da hat sich wieder jemand 20 Minuten an Google rangesetzt um uns zu beweisen, dass es irgendwo auf der Welt ein sehr ähnliches Tutorial gibt. Herzlichen Glückwunsch
MrSimonKeks is offline  
Thanks
1 User
Old 05/26/2011, 09:01   #9
 
elite*gold: 0
Join Date: Apr 2008
Posts: 192
Received Thanks: 42
Nett das du sowas machst
sieht gar nicht mal so schlecht aus ich schau es mir aber erst später nochmal in Ruhe an ^^
Dark BoM is offline  
Old 05/28/2011, 20:01   #10
 
elite*gold: 0
Join Date: Apr 2006
Posts: 6,597
Received Thanks: 1,830
Quote:
Originally Posted by MrSimonKeks View Post
Da hat sich wieder jemand 20 Minuten an Google rangesetzt um uns zu beweisen, dass es irgendwo auf der Welt ein sehr ähnliches Tutorial gibt. Herzlichen Glückwunsch
klar hab ja sonst nichts zu tun
Medix is offline  
Reply


Similar Threads Similar Threads
[Guide] Grundlagen der D2NT/JavaScript Programmierung
02/08/2012 - Diablo 2 Programming - 35 Replies
Hallo zusammen! Wie angedroht wird hier mein kleiner Guide entstehen, in dem es um die die Grundlagen der Programmierung von Scripten für D2NT entstehen. Da ich generell momentan wenig Zeit habe, werde ich nach und nach editieren, je nachdem wie ich Zeit und Lust habe. Die Struktur ist noch alles andere als Fest und wird eventuell noch drastisch geändert. Grundsätzliches Da ich immer wieder nach sehr grundlegenden Zusammenhängen gefragt werde, fand ich ich mal angebracht, diese...
Hilfe bei Trainer Programmierung
03/06/2010 - Last Chaos - 3 Replies
Hallo alle zusammen. Ich bin dabei, mich mit der Materie der Trainer-Programmierung zu beschäftigen. Ich habe schon ne ganze Menge Offsets rausgefunden und im Trainer verarbeitet. Ich möchte im Trainer mit anzeigen, welche Erfahrung und Zuneigung das Pet schon hat. Allerdings stolpere ich dabei über das Problem, dass es verschiedene Offsets für Drake und Pony gibt. Ich möchte aber nur die Eigenschaften des Tieres anzeigen, welches aktuell draußen ist. Wie finde ich einen "Schalter", also...
Problem bei Bot programmierung
02/01/2010 - WoW Bots - 18 Replies
Hallo Ich programmiere zur Zeit ein WoW Bot in C++, basierend auf Memory Reading. Es geht erst einmal darum, alle wichtigen Variablen aus dem WoW Ram zu filtern. Zurzeit kann ich erfolgreich den Namen, Level, PosX und PosY des Charakters ausgeben (dauerhaft, auch nach PC restart). Jedoch fehlt mir das Know-how bzw ich bräuchte kleine Denkanstösse und hilfen, damit ich weiterkomme. Theoretisch wäre es möglich mit den bereits gesammelten Daten einen Travel Bot zu proggen (es soll aber ein...
Kal-Programmierung
11/26/2007 - Kal Online - 81 Replies
HuHu, ich "versuche" mal die Kal-Sektion zu verbessern jeder nder irgendwelche Code's für Kal hat kann sie hier mal posten, ihr könnt sie ja ruhig coden hat sogar noob schutz weil eh nicht jeder damit umgehn kann =) hehe Dieser eine Code der Hochgeladen wurde: ///////////////////////////////////////////////// ///////////////////// // ClientCore.cpp // -------------------------------------------------- ----------------- // Default Client Dll entrypoint....
Programmierung
07/15/2007 - Kal Online - 9 Replies
Hey alle zusammen bin neu hier. Wollte jetzt zu den Sommerferien das Programmieren anfangen und lernen wie man ein khi programmiert. :) Könnte mir da jemand helfen? BIG THX Ps:Wenn das gerade irgenndwie gegen die regeln verstöst bitte closen :S hoffe mal net. EDIT:Hab in der Tutorial abteilung nix gefunden



All times are GMT +1. The time now is 14:13.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.