What in the hell means that?
I know, you can tell me that!
PHP-Code:
def cannotTrain(self,argsList):
pCity = argsList[0]
eUnit = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
bIgnoreCost = argsList[4]
bIgnoreUpgrades = argsList[5]
#Ab hier
Oil = gc.getInfoTypeForString("BONUS_OIL")
ePlayer = pCity.getOwner()
pPlayer = gc.getPlayer(ePlayer)
MyOil = pPlayer.getNumAvailableBonuses(Oil)
tank = gc.getInfoTypeForString('UNITCLASS_TANK')
NumTanks = pPlayer.getUnitClassCount(tank)
if (eUnit == tank):
if (NumTanks > (MyOil*10)) :
return True
der Code hier erlaubt nur 10 Panzer pro Öl, dass du hast.
(bzw. sollte, ich hab's jetzt nicht getestet; ist auch nicht mein Code, die Basis hat Moritz für mich geschrieben)
Du musst dazu aber in der PythonCallbackDefines.xml den CannotTrain-Callback auf 1 setzten.
Edit: Bääh, ich bin so ein mieser Programmierer, dass ich nicht mal die paar Zeilen fehlerfrei hinkrieg .
Geändert von The_J (05. Juni 2009 um 00:18 Uhr)
Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)
2 Öl für einen Panzer, war eigentlich gemeint! Aber so, ist das eine sehr gute Ideeder Code hier erlaubt nur 10 Panzer pro Öl, dass du hast.
Um das jetzt zu kapieren, erklär ich's mal mir selbst
das obere ist, meiner Meinung nach, bloss Informationen!PHP-Code:
if (eUnit == tank): //Falls Enabled (?) Unit = Panzer
if (NumTanks > (MyOil*10)) : //Falls Anzahl panzer > Anzahl Ölx10
return True //return true? Ich denke das bedeutet, man kann keine Panzer bauen!
PHP-Code:
Oil = gc.getInfoTypeForString("BONUS_OIL") //Mit Oil ist der Type "BONUS_OIL" gemeint!
ePlayer = pCity.getOwner() //Enabled (Ausgewählter) Spieler
pPlayer = gc.getPlayer(ePlayer) //pPlayer=? Vielleicht gespieler (von Mensch gesteuerter) Spieler?
MyOil = pPlayer.getNumAvailableBonuses(Oil) //My Oil ist Anzahl Oil (siehe oben)
tank = gc.getInfoTypeForString('UNITCLASS_TANK') //Zu tank gehört alles, was die Unitclass UNITCLASS_TANK hat!
NumTanks = pPlayer.getUnitClassCount(tank) //Anzahl des oberen Tank
Bei den Wörtern vor dem =, komm ich noch draus (playerCity;enabledUnit;...)PHP-Code:
def cannotTrain(self,argsList):
pCity = argsList[0]
eUnit = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
bIgnoreCost = argsList[4]
bIgnoreUpgrades = argsList[5]
Aber was ist diese argslist? Und die Zahlen in den Klammern?
Falls irgendwas falsch ist: KORRIGIERT MICH!
Schon wieder falsch .
PHP-Code:
def cannotTrain(self,argsList):
pCity = argsList[0]
eUnit = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
bIgnoreCost = argsList[4]
bIgnoreUpgrades = argsList[5]
#Ab hier
Oil = gc.getInfoTypeForString("BONUS_OIL")
ePlayer = pCity.getOwner()
pPlayer = gc.getPlayer(ePlayer)
MyOil = pPlayer.getNumAvailableBonuses(Oil)
tankclass = gc.getInfoTypeForString('UNITCLASS_TANK')
NumTanks = pPlayer.getUnitClassCount(tankclass)
normaltank = gc.getInfoTypeForString('UNIT_TANK')
germantank = gc.getInfoTypeForString('UNIT_GERMAN_PANZER')
if ((eUnit == normaltank)OR(eUnit == germantank)):
if (NumTanks > (MyOil*10)) :
return True
Ändern ist ja nicht schwierig .
Mit e oder i davor ist's meist die Zahl, mit der ne Einheit bzw. der Typ identifziert wird.
Oben also die Identifikation des Panzers geholt, die mit eUnit verglichen.
2. Zeile: .
3. Zeile: CanNOTtrain mit True heißt Ja, kann nicht trainieren.
ePlayer = die Nummer es aktuellen Spielers.
pPlayer = gc.getPlayer(ePlayer) dient dazu, um nicht die Nummer, sondern den aktuellen Spieler wirklcih zu bekommen.
Arglist: Das ist alles dass, was die Funktion übergeben bekommen.
Rest: .
Geändert von The_J (05. Juni 2009 um 09:27 Uhr)
Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)
Ach so!
Soll ich's in den Modern War Mod einbauen?
Naja, nicht ganz.
ePlayer ist die Zahl, wie TheJ schon gesagt hat, und pPlayer ist die Klasse/Objekt, das alle Infos vom Spieler, den du wählst, enthält.
tank wird so definiert, dass es eine Zahl ist. Damit man diese Zahl (Position in der XML-Datei) variabel halten kann, wird mit "gc.getInfoTypeForString" eine Art Suchmaschine betätigt, die zählt, an welcher Postion der Eintrag "Tank" gehört.
Und zur Mod: Also ich wäre schon dafür, dass du sowas mit einbaust. Nur müsstest du das dann auch für alle anderen machen.
Ich kann auch mal den Code für schreiben, wo man 3 Öl braucht, um überhaupt einen Panzer zu bauen.(ist sogar noch einfacher)
Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!
Grade etwas viel! Vielleicht für die ganz starken Panzer.Und zur Mod: Also ich wäre schon dafür, dass du sowas mit einbaust. Nur müsstest du das dann auch für alle anderen machen.
Ich kann auch mal den Code für schreiben, wo man 3 Öl braucht, um überhaupt einen Panzer zu bauen.(ist sogar noch einfacher)
Könntest du mir den Code schicken, oder sagen, was ich wo schreiben muss, wenn ich dir sage, welche Einheit wieviel von welchem Rohstoff braucht?
Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)
Ich glaube er will
Damit man mehr als ein Öl brauch, um Panzer zu bauen. (Keine Ahnung ob es >= bei Phyton gibt, sonst der Übersicht halber (MyOil >= 2))PHP-Code:
if (MyOil > 1) :
Ja, aber nicht >1 sondern =2!Damit man mehr als ein Öl brauch, um Panzer zu bauen. (Keine Ahnung ob es >= bei Phyton gibt, sonst der Übersicht halber (MyOil >= 2))
Aber die Idee mit 1ÖL = 10 Panzer ist auch gut!abzuändern ist jetzt aucu nicht schwer, du wolltest ja
PHP-Code:
if (NumTanks > (MyOil/2)) :
Weil mit der methode 2 Öl gleich Panzer bauen, kann man 2 Öl haben und dann 500 Panzer bauen!
So kann man aber mit 2 Öl nur 20 Panzer bauen!
Weil 2 Ölquellen genug liefern um die Panzer anzutreiben!
Nochmal eine Phyton-Frage: Hier hab ich auf der 2. Seite den Python-text
Also hab ich alles ab "## Locomotive Route Restrictor" an die richtige Stelle kopiert. Nur hab ich nun das problem, dass im Spielbildschirm nichts mehr erscheint.PHP-Code:
def unitCannotMoveInto(self,argsList):
ePlayer = argsList[0]
iUnitId = argsList[1]
iPlotX = argsList[2]
iPlotY = argsList[3]
## Locomotive Route Restriction
pUnit = gc.getPlayer(ePlayer).getUnit(iUnitId)
iTrainType = gc.getInfoTypeForString ( "UNIT_ARCHER" )
if pUnit.getUnitType() == iTrainType:
pPlot = CyMap().plot(iPlotX, iPlotY)
iRoute = gc.getInfoTypeForString ( "ROUTE_RAILROAD" )
if pPlot.getRouteType() != iRoute:
return True
## End Edit
return False
Ich seh zwar die Karte mit den Einheiten und alles, aber alles andere (die Balken wo die Buttons für's Menü, die berater, zum fortbewegen etc. der Einheiten sind) ist nicht mehr drauf!
Edit: Jetzt ist's wieder normal, zu normal! Ich sehe zwar alles. Aber der Bogenschütze kann sich überall fortbewegen...
Geändert von Civ (06. Juni 2009 um 20:43 Uhr)
Ich gib dir da mal einen Tipp, um solche Probleme vorzubeugen (mir passieren auch sehr häufig irgendwelche Fehler (vertippt etc.). Du musst das PythonDebugging von Civ anstellen.
Dazu musst du in der Civilization.ini den Wert von HidePythonExeptions von 1 auf 0 setzen.
Dann bekommst du eine Meldung, wenn was nicht stimmt und wenn waas nicht stimmt, kann das Interface nicht geladen werden und du erhälst ein unvollständiges Interface
Edit: Du musst in der PythonCallBack.xml etwas ändern!!!!
Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!
Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)