(Kann man das irgendwie umschreiben oder nicht)?
Ja kannst du:
public OnPlayerCommandText(playerid,cmdtext[]) {
//Hier alle deine Befehle
return SendClientMessage(playerid,-1,"SERVER: Der eingegebene Befehl existiert nicht!");
}
mfg. ![]()
(Kann man das irgendwie umschreiben oder nicht)?
Ja kannst du:
public OnPlayerCommandText(playerid,cmdtext[]) {
//Hier alle deine Befehle
return SendClientMessage(playerid,-1,"SERVER: Der eingegebene Befehl existiert nicht!");
}
mfg. ![]()
Einfach sowas machen:
//Oben im Skript:
new Zustand = 100;
//Unter OnGameModeInit
SetTimer("@z_v",1000*10,1);
//Und dann unten im Skript
@z_v();@z_v() {
if(!Zustand) {
//Was passieren soll, wenn der Zustand 0% hat
}
return Zustand--;
}
//Und den Command schreib mal so:
ocmd:zustand(playerid) {
new string[12];
format(string, sizeof(string),"Leben: %d%", Zustand);
return ShowPlayerDialog(playerid, DIALOG_ZUSTAND, DIALOG_STYLE_MSGBOX, "Zustand", string, "Ok", "");
}
mfg. ![]()
Frage 1: Mich würde mal interessieren was denn alles genau viele Ressourcen zieht, also unnötige Zeilen die man sich sparren kann?
[ SCRIPTING ] Code Optimierung
Frage 2: Wie schauts aus mit ocmd: wenn alle Befehle mit ocmd: und strcmp sind ist das schlecht, oder was ist am besten?
Das macht keinen direkten Unterschied...
Frage 3: Und ist es schlimm wenn man viele publics und stocks benutzt oder sollte man dies lieber vermeiden?
Naja, Funktionsaufrufe dauern natürlich ein wenig länger, als wenn man das direkt schreibt. Allerdings ist es auch manchmal Notwendig Funktionen zu nutzen...
Frage 4: Und wie kann man eigentlich die Ressourcen eines Scripts herausfinden? An der Speicherkapazität eines Scripts?
Mit Ressourcen wird zum einen der Speicher gemeint, zum anderen aber auch wie flüssig das Skript läuft...
Frage 5: Wenn ja wie viele MB's sollte ein komplettes, Ressourcen sparrendes Script betragen?
Das kann man pauschal nicht sagen...oder kannst du mir sagen, wie viel MB eine gute Software hat?
Man sollte halt so gut es geht versuchen Speicher zu sparen ![]()
mfg. ![]()
Es wird alles auser Hour ausgegeben, habe das auch printen lassen
Bist du doof? ![]()
Es ist ja auch 0 Uhr ![]()
Gibt aber immer irgendwie noch Probleme mit TextDrawDestroy.
Dann versuch doch mal Warnings eigenständig zu lösen ![]()
Es muss so heißen, wie der Warning es schon sagt:
TextDrawDestroy(Textdraw0);
TextDrawDestroy(Textdraw1);
TextDrawDestroy(Textdraw2);
mfg. ![]()
Function not registered: 'mysql_query'
Du nutzt das falsche MySQL Plugin + Include ![]()
Downloade dir mal das einheitlich nochmal ![]()
mfg. ![]()
Script[gamemodes/Script1.amx]: Run time error 19: "File or function is not found"
Downloade dir mal das nativechecker Plugin und poste mal, was dann in den Logs steht ![]()
mfg. ![]()
jetzt geht mein login system nicht mehr und es wird auch kein geld o.ä geladen
Tja...das ist natürlich doof, wenn man Includes von Leuten nutzt, die nicht richtig hooken können ![]()
Schreib im Include unter OnPlayerConnect...
CallLocalFunction("FB_OnPlayerConnect","d",playerid);
Dann sollte es gehen ![]()
mfg. ![]()
Ändere folgendes mal in der FoXban.inc:
In der letzten Zeile steht folgendes:
# Define OnPlayerConnect FB_OnPlayerConnect
Lösche die Zeile und schreib folgendes:
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect FB_OnPlayerConnect
mfg. ![]()
Die unterbricht komischerweise so komisch...
Mach es mal so:
ApplyAnimation(i, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 1, 0, 1);
Wie erstelle ich ein Random aus Spieler welche nur eine gewisse Variable haben.
Also Beispiel, Spieler XY und Spieler ZY haben beide die Variable 1 und sollten somit beim random dabei sein.
Es sollte immer einer der ganzen im random ausgewählt werden.
So kann man das lösen:
new list[4],idx;
for(new i; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || !var[i]) continue;
list[idx] = i,idx++;
}
//Und hier kannst du das dann so nutzen:
new randomSpielerID = list[random(4)];
Bei dem Beispiel nehme ich an, dass es nur 4 Spieler sind die diese Variable (var[ i ]) auf true bzw nicht gleich 0 haben ![]()
mfg. ![]()
Kann du den Fehler genauer erläutern?
Achso okay habe es nochmal gerade getestet.
Wenn man bei Facebook nicht angemeldet ist und sich einloggt, dann klappt es ![]()
Wenn man allerdings schon angemeldet ist und dann darauf klickt, kommt es zu einem Error und dann ist die Seite für einen Offline ![]()
mfg. ![]()
In diesem Thread sollen bitte nur Verbesserungsvorschläge, Bugs und neue Ideen gepostet werden.
Habe es mir noch nicht genau angeschaut, aber ein Bug ist mir direkt aufgefallen, die API mit Facebook funktioniert nicht ![]()
//Edit: Entweder ist deine Seite offline..oder der Bug hat sie crashen lassen ![]()
mfg. ![]()
Aber die Inkludierung von der samp include brauchst du doch eigendlich nicht, oder täusche ich mich da?
Nun, sicher ist sicher ![]()
#include <a_samp>
#include <KindVehicle>
Das würde ohne Fehler funktionieren, da könnte man auch das Includieren weg lassen, da man es ja im Gamemode schon macht.
Aber folgendes:
#include <KindVehicle>
#include <a_samp>
Das würde zu Fehlern kommen, da auf Funktionen zugegriffen werden, die in der a_samp Include sind ![]()
Aus diesem Grund ist es halt sicherer, dass es auch ja nicht zu Fehlern kommt und durch die Directives in der a_samp Include kann sie auch nicht 2x includiert werden ![]()
Aus diesem Grund ist das besser so, wie er es gemacht hat ![]()
//Edit:
Was er noch machen sollte wäre sowas:
#if defined _KindaVehicle
#endinput
#endif
#define _KinaVehicle
Damit sein Include nicht 2x includiert werden kann ![]()
mfg. ![]()
"UPDATE Spielerautos SET X='%f',Y='%f',Z='%f',ROTATION='%f' WHERE DB_ID='%i'"
Diese Zeile verursacht den Fehler ![]()
Schreibe sie mal so:
format(query,sizeof(query),"UPDATE `Spielerautos` SET `X`='%f',`Y`='%f',`Z`='%f',`ROTATION`='%f' WHERE `DB_ID`='%i'",cInfo[i][carx],cInfo[i][cary],cInfo[i][carz],cInfo[i][carrota],cInfo[i][DB_ID]);
und wenn das nichts hilft, printe dir mal, was daraus kommt...überprüfe deine Werte und schau ob das auch alles wirklich existiert ![]()
mfg. ![]()
Bisschen was falsch kann das sein ?
Ja...mach es so:
new bool:d_response; //Das ist eine globale Variable
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_SPIELAUSWAHL) {
if(!response) return 1;
switch(listitem) {
case 0: //Hier Code, aber kein return!
case 1: //Hier Code, aber kein return!
case 2: //Hier Code, aber kein return!
}
if(!d_response) d_response=true;
else {
d_response=false;
//Hier kannst du dann weiter machen, da beide gewählt haben
}
}
return 0;
}
mfg. ![]()
vielleicht fällt euch dazu was ein...
Wenn du uns dazu noch den SQL-Befehl zeigst, den du dazu ausführst, bestimmt.
mfg. ![]()
Einfach mit nem boolean:
new bool:d_response;
//Unter OnDialogResponse
if(response) {
if(!d_response) d_response=true;
else {
d_response=false;
//Hier kannst du dann weiter machen, da beide gewählt haben
}
}
PS: Das würde nur klappen, wenn immer nur 2 Spieler auf dem ganzen Server spielen können! Andernfalls, musst du mit einem Array arbeiten ![]()
mfg. ![]()
//Edit: Ja stimmt, Klammern sind richtig, mach das dochmal in eine Codebox..anstatt den so schläd dahin zu posten ![]()
Aber, mach doch einfach n Print-Debug und schau, was dir ausgegeben wird für tipp1 ![]()
mfg. ![]()
Du kannst nicht nut strcmp benutzen!
Doch in diesem Fall könnte er das tun:
ocmd:accept(playerid,params[]) {
if(!params[0]) return SendClientMessage(playerid,-1,"Benutzung: /accept [Aktion]");
if(!strcmp(params,"invite",true)) {
//Wenn invite angegben wurde...
} else if(!strcmp(params,"pd",true)) {
//Wenn pd angegben wurde...
}
return 1;
}
mfg. ![]()
anscheinend ist die Wirkung in Java anders als in Pawn oder C.
Nein, eigentlich nicht.
Das ist halt das Bitwise OR...auf Binärer Ebene kannst du das halt nutzen:
Nehmen wir ein Beispiel:
11001 //25
|
10010 //18
= 11011 //27
Zur kurzen Erklärung, wenn du im Binär rechnen aufgepasst hast, wird hier einfach wo mind eine 1 ist, bleibt es bei eins und wo eine 0 ist wird diese übernommen ![]()
In Pawn kannst du das so rechnen:
new x = 0b11001;
x |= 18;
printf("%d",x); //-> x ist 27
So nutzt man diesen Operator ![]()
mfg. ![]()