Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
(This post was last modified: 11.11.2011, 19:21 by Bettdecke1 .)
09.12.2010, 18:24
Hallo Community,
in diesem Tutorial versuche ich euch zu erklären wie man eigene Einheiten erstellt. Funktioniert nur in Version 1.4!
Einheit erstellen:
1. Die Datei {dslan}/htdocs/include/configs/ units.php mit einem Editor öffnen und am Ende aber vor dem "
?> " folgenden Code einfügen:
Code
PHP Code:
$cl_units -> add_unit ( $lang -> grab ( "configs_units" , "spear" ), "unit_spear" ); $cl_units -> set_woodprice ( "50" ); $cl_units -> set_stoneprice ( "30" ); $cl_units -> set_ironprice ( "10" ); $cl_units -> set_bhprice ( "1" ); $cl_units -> set_time ( "1000" ); $cl_units -> set_att ( "10" , "1.045" ); $cl_units -> set_def ( "15" , "1.045" ); $cl_units -> set_defcav ( "45" , "1.045" ); $cl_units -> set_defarcher ( "20" , "1.045" ); $cl_units -> set_speed ( "720" ); $cl_units -> set_booty ( "25" ); $cl_units -> set_needed (array()); $cl_units -> set_recruit_in ( "barracks" ); $cl_units -> set_specials (array()); $cl_units -> set_group ( "foot" ); $cl_units -> set_col ( "A" ); $cl_units -> set_attType ( "def" ); $cl_units -> set_description ( $lang -> grab ( "configs_units" , "spear_des" ));
1.1 Öffnet die techs.php
Füge am ende der Datei aber vor dem "?>" folgendes hinzu:
Code
PHP Code:
$cl_techs -> add_tech ( $lang -> grab ( "configs_techs" , "spear" ), "spear" ); $cl_techs -> set_group ( "Infanterie" ); $cl_techs -> set_woodprice ( "256" , "1.6" ); $cl_techs -> set_stoneprice ( "244" , "1.6" ); $cl_techs -> set_ironprice ( "296" , "1.6" ); $cl_techs -> set_time ( "2900" , "1.75" ); $cl_techs -> set_maxStage ( "3" ); $cl_techs -> set_needed (array()); $cl_techs -> set_attType (array( 'def' , 'off' , 'spy' )); $cl_techs -> set_description ( "" );
1.2 Kommen wir nun zum bearbeiten der Einheit.
Geht wieder in die units.php und bearbeitet den Code, den ihr eingefügt habt, nach euren Wünschen. Hier ein paar Informationen.
Nehmen wir z.B. den
Bauer
Code
PHP Code:
$cl_units -> add_unit ( $lang -> grab ( "configs_units" , "bauer" ), "unit_bauer" ); // Name der Einheit. $cl_units -> set_woodprice ( "15" ); // Rekrutierpreis Holz $cl_units -> set_stoneprice ( "15" ); // Rekrutierpreis Lehm $cl_units -> set_ironprice ( "5" ); // Rekrutierpreis Eisen $cl_units -> set_bhprice ( "1" ); // Benötigte Bauernhofplätze $cl_units -> set_time ( "500" ); // Rekrutierzeit $cl_units -> set_att ( "5" , "1.045" ); // Angriffswert; + Faktor pro Stufe $cl_units -> set_def ( "7" , "1.045" ); // Allgemeine Verteidigung; Faktor $cl_units -> set_defcav ( "15" , "1.045" ); // Verteidigung Kavallerie; Faktor $cl_units -> set_defarcher ( "10" , "1.045" ); // Verteidigung Bogenschützen; Faktor $cl_units -> set_speed ( "450" ); // Truppengeschwindigkeit $cl_units -> set_booty ( "25" ); // Beute $cl_units -> set_needed (array( 'smith' => 5 , 'barracks' => 10 )); // Vorraussetung; Gebäude $cl_units -> set_recruit_in ( "barracks" ); // Rekrutierort $cl_units -> set_specials (array()); // keine Ahung $cl_units -> set_group ( "foot" ); // Einheitengruppe ( foot, cav ) $cl_units -> set_col ( "A" ); // A, B, C; Wählt die Spalte in der Schmiede aus. $cl_units -> set_attType ( "def" ); // Einheitentyp; off, def oder spy $cl_units -> set_description ( $lang -> grab ( "configs_units" , "bauer_des" )); // Einheitenbeschreibung
Jetzt die techs.php:
Code
PHP Code:
$cl_techs -> add_tech ( $lang -> grab ( "configs_techs" , "bauer" ), "bauer" ); // Einheitenname $cl_techs -> set_group ( "Infanterie" ); // Einheitengruppe ( Infanterie, Kavallerie, Belagerungswaffe $cl_techs -> set_woodprice ( "120" , "1.6" ); // Forschungspreis Holz; Faktor $cl_techs -> set_stoneprice ( "120" , "1.6" ); // Forschungspreis Lehm; Faktor $cl_techs -> set_ironprice ( "50" , "1.6" ); // Forschungspreis Eisen; Faktor $cl_techs -> set_time ( "1900" , "1.75" ); // Forschungsdauer; Faktor $cl_techs -> set_maxStage ( "3" ); // Max. Forschungsstufe $cl_techs -> set_needed (array( 'smith' => 5 , 'barracks' => 10 )); // Vorraussetsung Gebäude $cl_techs -> set_attType (array( 'def' , 'off' , 'spy' )); $cl_techs -> set_description ( "" );
2. Die Sprachdatei
Geht in {dslan}/htdocs/lang/ in die de.ini
Sucht nach "[configs_units]"
Fügt dort hinzu:
Code:
bauer="Bauer"
bauer_des="Der Bauer kann die Letzte Rettung für dein Dorf sein
das war vor dem "=" steht, ist der Name, der auch in der units.php und techs.php benutzt wird. Diese Namen müssen gleich sein. Das, dass hinter dem "=" steht, sieht man dann in der Kaserne & und der Beschreibung der Einheit (hilfe etc.)
Sucht nach "[configs_techs]"
Fügt dort hinzu:
Genauso wie oben
3. Die Grafiken
Ihr braucht einmal eine 18x18 Grafik die unit_bauer heißen muss und ihm Typ "
PNG " sein muss. Ebenfalls muss, wie bei der Sprachdatei, immer die Grafik heißen, wie es in der units.php und techs.php steht! (unit_name). Diese Grafik muss in {dslan}/htdocs/graphic/unit
Dann braucht ihr 3 Grafiken in der größe von 60x60, eine muss "bauer" heißen, die 2. "bauer_cross" und die 3. "bauer_grey" jeweils im Typ "
PNG " (Können die selben Grafiken sein.) Diese Grafiken müssen in {dslan}/htdocs/graphic/unit_big
Hier könnt ihr euch die Grafiken downloaden.
4. Der SQL-Code
Der SQL-Code an sich ist eigentlich ganz einfach:
Quote: ALTER TABLE `villages` ADD `unit_bauer_tec_level` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe_tec_level` ;
ALTER TABLE `villages` ADD `all_unit_bauer` INT( 6 ) NULL DEFAULT '0' AFTER `all_unit_axe` ;
ALTER TABLE `unit_place` ADD `unit_bauer` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe` ;
So muss die SQL aussehen, diese fügt ihr in
http://localhost/phpmyadmin -> Datenbank lan -> "SQL" auswählen und den Code einfügen und Ausführen.
Auch da immer
Code:
ALTER TABLE `villages` ADD `unit_name_tec_level` INT ( 11 ) NULL DEFAULT '0' AFTER `unit_axe_tec_level`;
So geht das auch bei dem rest von dem Code..
Das was hinter
Code:
INT ( 11 ) NULL DEFAULT '0' AFTER
steht. In diesem Fall
Code:
`unit_axe_tec_level`;
bedeutet das die Tabelle, mit den Bauern, hinter den Äxten erstellt wird.
Erstellte Einheit wieder löschen:
Einfach alle Codes, die Ihr in der units.php, techs.php, de.ini löschen. Alle Grafiken die Ihr eingefügt habt löschen und die Tabelle, indem fall diese:
PHP Code:
ALTER TABLE ` villages ` ADD ` unit_bauer_tec_level ` INT ( 11 ) NULL DEFAULT '0' AFTER ` unit_axe_tec_level ` ; ALTER TABLE ` villages ` ADD ` all_unit_bauer ` INT ( 6 ) NULL DEFAULT '0' AFTER ` all_unit_axe ` ; ALTER TABLE ` unit_place ` ADD ` unit_bauer ` INT ( 11 ) NULL DEFAULT '0' AFTER ` unit_axe ` ;
Müssen so gelöscht werden:
PHP Code:
ALTER TABLE ` villages ` DROP ` all_unit_bauer `; DROP ` unit_bauer_tec_level `; ALTER TABLE ` unit_place ` DROP ` unit_bauer `,
Also immer vor den Namen der Tabellen ein DROP setzen.
Ich hoffe ihr habt das einigermaßen Verstanden!
Bei Fragen, meldet euch einfach unten oder per PN.
PS:
Eure selbst erstellten Einheiten könnt ihr
hier vorstellen, wenn ihr wollt.
MfG
Christian
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 2'492
Threads: 43
Joined: Mar 2010
Reputation:
87
3. Spoiler fehlt ein "/"
Aber sonst Super!
LG
Molt
Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
Geändert, danke
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 129
Threads: 10
Joined: Apr 2010
Reputation:
2
Sehr schönes Tutorial
Posts: 1'042
Threads: 11
Joined: Oct 2010
Reputation:
19
(This post was last modified: 09.12.2010, 23:01 by lolli1 .)
09.12.2010, 22:59
nice tut sehr verständlich geschrieben
in der 8.zeile steht: "die units.php mit einem ordner öffnen" muss durch editor oder so ersetzt werden^^
Ein missglückter Versuch eines Saltos von einem Pferd
-Sir! Wir sind umzingelt!
-Ausgezeichnet, jetzt können wir in jeder Richtung angreifen.
Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
(09.12.2010, 19:29) ledewram Wrote: Sehr schönes TutorialDanke dir
(09.12.2010, 22:59) lolli1 Wrote: nice tut sehr verständlich geschrieben
in der 8.zeile steht: "die units.php mit einem ordner öffnen" muss durch editor oder so ersetzt werden^^
öhm, ja ^^ Danke!
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 3'164
Threads: 47
Joined: Dec 2008
Reputation:
205
Bei
PHP Code:
$cl_techs -> set_needed (array());
gehört ein Array mit den benötigten Gebäudestufen rein, also zB:
PHP Code:
$cl_techs -> set_needed (array( 'smith' => 5 , 'barracks' => 10 ));
für Schmiede auf Stufe 5 und Kaserne Stufe 10
Sonst nettes Tut
MfG Manuel
Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
Ach stimmt, das war das mit den gebäudevorraussetzungen
Wusste doch das ich das vergessen hatte
Thx
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 43
Threads: 5
Joined: Dec 2010
Reputation:
0
Kannst du das mit den Gebäudevorraussetzungen oben für Anfänger dann bei arrays einfügen?
Währe vielleicht für die, die sich eine Einheit erstellen möchten, hilfreich!
Ansonsten DANKE!
Für viele ist das genau das was sie suchen um ihr TWLAN zu personalisieren!
Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
(16.12.2010, 18:03) kippel-boy10 Wrote: Kannst du das mit den Gebäudevorraussetzungen oben für Anfänger dann bei arrays einfügen?
Währe vielleicht für die, die sich eine Einheit erstellen möchten, hilfreich!
Ansonsten DANKE!
Für viele ist das genau das was sie suchen um ihr TWLAN zu personalisieren!
Hab ich doch schon eingefügt
Bitte!
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 38
Threads: 6
Joined: May 2010
Reputation:
0
Ich habe mir versucht
(nach dem Tutorial von Bettdecke)
eigene Einheiten zu erstellen.
Insgesamt habe ich 3 neue Einheite eingefügt. (kann man soviele einfügen?)
Bin Schritt für Schritt vorgegangen aba hab iwie ein Fehler drin den ich net finde
Fatal error: Call to a member function on a non-object in C:\dslan_v1.4\htdocs\include\configs\units.php on line 209
Hier der Code von einer neuen Einheit:
PHP Code:
$cl_units -> add_unit ( $lang -> grab ( "configs_units" , "nonique" ), "unit_nonique" ); $cl_units -> set_woodprice ( "80" ); $cl_units -> set_stoneprice ( "50" ); $cl_units -> set_ironprice ( "60" ); $cl_units -> set_bhprice ( "1" ); $cl_units -> set_time ( "1000" ); $cl_units -> set_att ( "40" , "1.055" ); $cl_units -> set_def ( "5" , "1.045" ); $cl_units -> set_defcav ( "10" , "1.055" ); $cl_units -> set_defarcher ( "15" , "1.045" ); $cl_units -> set_speed ( "580" ); $cl_units -> set_booty ( "100" ); $cl_techs -> set_needed (array( "smith" => 5 , "barracks" => 2 )); // Das ist Zeile 209 $cl_units -> set_recruit_in ( "barracks" ); $cl_units -> set_specials (array()); $cl_units -> set_group ( "foot" ); $cl_units -> set_col ( "A" ); $cl_units -> set_attType ( "off" ); $cl_units -> set_description ( $lang -> grab ( "configs_units" , "nonique_des" ));
Die dslan.bat beschwert sich über folgendes:
I der Datenbakn habe ich folgendes eingefügt:
ALTER TABLE `villages` ADD `unit_nonique_tec_level` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe_tec_level` ;
ALTER TABLE `villages` ADD `all_unit_nonique` INT( 6 ) NULL DEFAULT '0' AFTER `all_unit_axe` ;
ALTER TABLE `unit_place` ADD `unit_nonique` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe` ;
ALTER TABLE `villages` ADD `unit_tamia_tec_level` INT( 11 ) NULL DEFAULT '0' AFTER `unit_
nonique _tec_level` ;
ALTER TABLE `villages` ADD `all_unit_tamia` INT( 6 ) NULL DEFAULT '0' AFTER `all_unit_
nonique ` ;
ALTER TABLE `unit_place` ADD `unit_tamia` INT( 11 ) NULL DEFAULT '0' AFTER `unit_
nonique ` ;
ALTER TABLE `villages` ADD `unit_turm_tec_level` INT( 11 ) NULL DEFAULT '0' AFTER `unit_
tamia _tec_level` ;
ALTER TABLE `villages` ADD `all_unit_turm` INT( 6 ) NULL DEFAULT '0' AFTER `all_
tamia _axe` ;
ALTER TABLE `unit_place` ADD `unit_turm` INT( 11 ) NULL DEFAULT '0' AFTER `unit_
tamia ` ;
Nichts ist so schlimm, wie wir fürchten,
nichts so gut, wie wir hoffen.
I nob: YOU
Posts: 1'206
Threads: 15
Joined: Aug 2010
Reputation:
39
versuch mal "" mit '' zu ersetzen, aber nur in der zeile
Posts: 3'134
Threads: 11
Joined: Aug 2009
Reputation:
153
Schick mal den code der in Zeile 209 steht pls
Wenn ich dir helfen konnte,
bewerte mich doch bitte!
Manche Leute sagen, 20 Stunden am Tag Tetris zu summen wäre verrückt, ich frage mich nur wieso...
Posts: 2'492
Threads: 43
Joined: Mar 2010
Reputation:
87
@Bettdecke: Lesen? -.-
(22.12.2010, 08:33) Nonilol Wrote: PHP Code:
$cl_techs -> set_needed (array( "smith" => 5 , "barracks" => 2 )); // Das ist Zeile 209
LG
Molt
Posts: 3'164
Threads: 47
Joined: Dec 2008
Reputation:
205
pl4n3 hat die Frage in dem Thread im Frageforum beantwortet.
Ich schreibs mal hier rein.
Das $cl_techs in Zeile 209 mit $cl_units ersetzen
MfG Manuel
Posts: 2'492
Threads: 43
Joined: Mar 2010
Reputation:
87
Kopf->Tisch
Hätt uns das nicht allen auffallen müssen?
Danke SlimShady.
LG
Molt
Posts: 3'164
Threads: 47
Joined: Dec 2008
Reputation:
205
(This post was last modified: 22.12.2010, 19:46 by SlimShady95 .)
22.12.2010, 19:45
Mal ne doofe Frage
Wie bekommt man da $cl_techs rein^^
@molt: hat pl4n3 gesagt, is mir erst auch nich aufgefallen^^
Edit: Bettdecke ist Schuld, er hat falsch kopiert
MfG Manuel
Posts: 38
Threads: 6
Joined: May 2010
Reputation:
0
Vielen Dank dass ihr meine Frage beanwortet habt!!!
Nichts ist so schlimm, wie wir fürchten,
nichts so gut, wie wir hoffen.
I nob: YOU
Posts: 35
Threads: 3
Joined: Jan 2011
Reputation:
0
Ich kapier das mit dem SQL nicht. also das ist mein Script in units.php:
PHP Code:
$cl_units -> add_unit ( $lang -> grab ( "configs_units" , "Steinschleuderer" ), "unit_Steinschleuderer" ); $cl_units -> set_woodprice ( "60" ); $cl_units -> set_stoneprice ( "80" ); $cl_units -> set_ironprice ( "40" ); $cl_units -> set_bhprice ( "1" ); $cl_units -> set_time ( "1750" ); $cl_units -> set_att ( "70" , "1.045" ); $cl_units -> set_def ( "10" , "1.045" ); $cl_units -> set_defcav ( "10" , "1.045" ); $cl_units -> set_defarcher ( "70" , "1.045" ); $cl_units -> set_speed ( "900" ); $cl_units -> set_booty ( "65" ); $cl_units -> set_needed (array( "smith" => "4" , "barracks" => "3" )); $cl_units -> set_recruit_in ( "barracks" ); $cl_units -> set_specials (array()); $cl_units -> set_group ( "foot" ); $cl_units -> set_col ( "A" ); $cl_units -> set_attType ( "off" ); $cl_units -> set_description ( $lang -> grab ( "configs_units" , "honderos_des" ));
und das mein tech.php-Script:
PHP Code:
$cl_techs -> add_tech ( $lang -> grab ( "configs_techs" , "Steinschleuderer" ), "Steinschleuderer" ); $cl_techs -> set_group ( "Infanterie" ); $cl_techs -> set_woodprice ( "300" , "1.6" ); $cl_techs -> set_stoneprice ( "375" , "1.6" ); $cl_techs -> set_ironprice ( "250" , "1.6" ); $cl_techs -> set_time ( "3500" , "1.75" ); $cl_techs -> set_maxStage ( "10" ); $cl_techs -> set_needed (array( "smith" => "4" )); $cl_techs -> set_attType (array( 'def' , 'off' , 'spy' )); $cl_techs -> set_description ( "" );
Also das sind meine Bilder:
1. hab ich was falsch gemacht?
2. wie muss ich das in SQL eingeben?
Posts: 1'206
Threads: 15
Joined: Aug 2010
Reputation:
39
der sql könnte so aussehen:
ALTER TABLE `villages` ADD `unit_Steinschleuderer_tec_level` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe_tec_level` ;
ALTER TABLE `villages` ADD `all_unit_Steinschleuderer` INT( 6 ) NULL DEFAULT '0' AFTER `all_unit_axe` ;
ALTER TABLE `unit_place` ADD `unit_Steinschleuderer` INT( 11 ) NULL DEFAULT '0' AFTER `unit_axe` ;