Quote:
Originally Posted by Venom'
Das kommt schon etwas auf den "Coderstil" an zbs. früher habe ich es immer so gemacht if (Ten ==1),if (Ten ==2),if (Ten ==3) mittlerweile bin ich auf eine andere Base umgestiegen da mach ich jetzt diesen "Switch,Break,Case"-Aktion.Fakt ist das beide Methoden funktionieren.
Nur if(Ten ==1,2,3 ) macht bissn Laggs unsow..aber das ist einfacher für Anfänger anstatt "Switch,Break,Case"
Code:
Übersetzt :
Wenn (SpreadOff)//Wenn man NoSpread aktiviert schaltet man "Wenn" an bzw. (SpreadOff)
{// { braucht man nicht immer.
*(int*)ADR_NOSPREAD=0;//Diese "Function" wird dann freigeschaltet weil du "SpreadOff" auf 1 (true) hast.
}// -
|
Oh man das hat nichts mit der Base zu tuhn. Ich versuche es mal ein bischen pasabel zu erklären.
Code:
int MeineVabriale = 1; // Defenierung einer Globalen Vabriale die den Wert 1 hat.
Quote:
Vor beispiel:
Additem(.......,&CH_NoSpread....
Ihr habt vorher irgentwo die Vabriale CH_NoSpread definiert, warnscheinlich mit dem Wert 0.
Die Menu Funktionen addiert normalerweiße beim Rechten Pfeil Tastenklick 1 dazu. Also wenn man einmal drückt ist der Wert nicht mehr 0, sondern 1. Dazu springt das char Array auch ein weiter nach rechts.
Signalgeber ",&CH_NoSpread" ich meine "&" gibt die Vabriale als Past-by-Reference weiter und nicht wie der Standart Paste-By-Value. Das heißt wenn man Past-by-Reference anwendet, wird der Wert der Vabriale auch mit geändert, dass Standart hingegen übergibt nur die Zahl 0. Dafür könnte man auch einfach 0 reinschreiben.
Bei den WarRock Cheats geht der Menu Programmierer davon aus das wenn eine Vabriale 0 ist das das dann eure so genannte "OFF" Funktion ist und wenn sie den Wert 1 hat, dann eure "ON" Funktion ist, dabei ist auch der Parameter maxval zu beachten. Das ist der Maximale Wert, den eure AddItem Funktion +1 addieren darf.
Deswegen geht man z.b. auch her und verändert so die Speicheradressen im Prozess:
if(CH_NoSpread==0) //Wenn die Vabriale CH_NoSpread gleich 0 ist, wird die Bedinung aktzeptiert und somit geht der Menu Programmierer davon aus, das das eure "OFF" Funktion ist.
{
*(double*)(.....) = /* gleich*/ 131; //Ich hab jetzt irgenteine Zahl genommen.
}
if(CH_NoSpread==1) //Wenn die Vabriale CH_NoSpread gleich 1 ist, wird die Bedinung aktzeptiert und somit geht der Menu Programmierer davon aus, das das eure "ON" Funktion ist.
{
*(double*)(.....) = /* gleich*/ 0;
}
Dabei ist diese "Methode" *(double*)(.....) = /* gleich*/ 0; langsam, es empfiehlt sich memcpy, dass ist viel schneller.
|
Zurück zu meinem Beispiel:
Man kann eine Vabriale auf verschiedesten "Wegen" auf Wer überprüfen. Beispiele:
if(MeineVabriale==0)
{
}
if(MeineVabriale==1)
{
}
usw.... wenn man mehrer Werte überprüfen will dann empfielt sich die Anweisung "switch", siehe hier:
switch(MeineVabriale) // Durch eine Switch -Anweisung kann die Ausführung eines Programmes bei einer Sprungmarke fortgesetzt werden. Der Wert eines Ausdrucks bestimmt, bei welcher Sprungmarke die Ausführung fortgesetzt wird. Der Ausdruck muß einen ganzzahligen Wert ergeben.
{
case 0: break; //also Wenn MeineVabriale gleich 0 ist, dann wird der Programm code ausgeführt bis zum nächsten "break;"
case 1: break;
case 2: break;
usw....
}
Ich hoffe das ist etwas verständlicher...
Quote:
Originally Posted by Tibolus
jetzt übertreib mal nicht ... ich kann gut coden aber
woher soll ich den jetzt bitteschön wissen was if(test) damit meint ?
das kann man garnicht erkennen ...
übertreib mal nicht ,als wenn ich nix kann :facepalm:
gut das du geholfen hast aber das meinte ich alles garnicht ... ^^
ich weiß wie if bedingungen laufen ...
ich wollte nur die genaue definition wissen
wenn man if(test) macht ...
wie ich von willi jetzt mitbekommen habe ist es ganau das gleiche wie
if(test!=0)
|
Der Operator != ist ungleich. Das ist richtig was du sagst. Ich sagte manche "Programmierer" haben Probleme. Ich bezweifele immer noch ob bei der "WarRock" ""Szene"" überhaupt wer "*richtig* programiert.
Meine Rechtschreibfehlör :D könnt ihr euch in den Arsch schrieben