Thread Rating:
  • 2 Vote(s) - 2 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[v1.4] Eigene Einheiten erstellen
#1
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


1.1 Öffnet die techs.php

Füge am ende der Datei aber vor dem "?>" folgendes hinzu:

Code


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


Jetzt die techs.php:

Code


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:
Code:
bauer="Bauer"

Genauso wie oben Wink

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 `villagesADD `unit_bauer_tec_levelINT11 NULL DEFAULT '0' AFTER `unit_axe_tec_level` ;
ALTER TABLE `villagesADD `all_unit_bauerINTNULL DEFAULT '0' AFTER `all_unit_axe` ;
ALTER TABLE `unit_placeADD `unit_bauerINT11 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...


Reply
#2
3. Spoiler fehlt ein "/"

Aber sonst Super! Wink

LG
Molt
Reply
#3
Geändert, danke Smile
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...


Reply
#4
Sehr schönes TutorialSmile
[Image: 5gkoc8pq.png]
Reply
#5
nice tut sehr verständlich geschrieben Wink

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 Big Grin
-Sir! Wir sind umzingelt!
-Ausgezeichnet, jetzt können wir in jeder Richtung angreifen.
Reply
#6
(09.12.2010, 19:29)ledewram Wrote: Sehr schönes TutorialSmile
Danke dir Smile

(09.12.2010, 22:59)lolli1 Wrote: nice tut sehr verständlich geschrieben Wink

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...


Reply
#7
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 Wink

Sonst nettes Tut Smile

MfG Manuel
Reply
#8
Ach stimmt, das war das mit den gebäudevorraussetzungen Big Grin Wusste doch das ich das vergessen hatte Wink 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...


Reply
#9
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!
Reply
#10
(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 Wink

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...


Reply
#11
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 Sad

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:

[Image: fehlerdslan.jpg]

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 Confusednob: YOU
Reply
#12
versuch mal "" mit '' zu ersetzen, aber nur in der zeile
Keine Sigi sonst Stress
Reply
#13
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...


Reply
#14
@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
Reply
#15
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
Reply
#16
Kopf->Tisch

Hätt uns das nicht allen auffallen müssen? Big Grin
Danke SlimShady.

LG
Molt
Reply
#17
Mal ne doofe Frage Big Grin
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 Big Grin

MfG Manuel
Reply
#18
Vielen Dank dass ihr meine Frage beanwortet habt!!!
Nichts ist so schlimm, wie wir fürchten,
nichts so gut, wie wir hoffen.
I Confusednob: YOU
Reply
#19
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:
[Image: 030111211544_unit_Steinschleuderer.png]
[Image: 030111211842_Steinschleuderer.png]
[Image: 030111211951_Steinschleuderer_cross.png]
[Image: 030111212016_Steinschleuderer_grey.png]

1. hab ich was falsch gemacht?
2. wie muss ich das in SQL eingeben?
Reply
#20
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` ;
Keine Sigi sonst Stress
Reply




Users browsing this thread: 1 Guest(s)