Unnötig, niemand wird jemals den Zeitlichen Unterschied von ( 1000 / 100 000 )ms pro Befehlsaufruf merken. Langsam sollte es doch so ziemlich Jedem auf die Nerven gehen,dass jeder meint, sein eigenes <HIER_BUCHSTABE_EINSETZEN>CMD erstellt.
Von allen die bisher behauptet haben,ihres wäre schneller und besser als OCMD ( oder sonst ein A,B,C,D,E ... CMD ) ist noch keines schneller als ZCMD oder YCMD gewesen. Die beiden sind sowieso die Originale,wenn man es so nehmen will.
Beiträge von Goldkiller
-
-
Kannst das AdminLevel über eine PlayerVariable ( PVar ) auslesen und damit in mehreren Scripten arbeiten. Alternativen wäre Funktionen,die per CallRemoteFunction augerufen werden und den Wert liefern oder get/setProperty.
-
Du hast nicht verstanden,wie das Schlüsselwort enum wirklich funktioniert ( Liegt wohl daran,dass viele es hier nicht verstanden haben und die Informationen falsch weiter geben ) . Dafür sind sie nicht gedacht:
Nimm ein Array,so zum Beispiel:
new static const g_asWords[][] = {
{"Arschloch"},
{"Idiot"}
};
Mit einer Schleife müsstest dann die Einträge im Array mit dem Text in OnPlayerText prüfen.Allerdings nicht mit strcmp, sondern strfind. -
Hat jetzt weniger mit PAWN bzw scripten zu tun, es gibt aber bei vielen Programmen die Funktion "Suchen und Ersetzen".
Suchen: );
Ersetzen mit: ,3 );Könntest es auch mit
, .virtualworld = 3 ); ersetzen,für den Fall, virtualworld ist der Platzhalter im Funktionskopf für die Virtualworld und du hast nicht die korrekte Reihenfolge bei den Parametern.
Falls es nicht verstanden hast,zeig mal a) die Funktion und b) wie der Quellcode vorher bzw nacher Konkret aussehen soll. -
Das ist wirklich ein riesen Text.
if(Gruppe1 >= 1 && Gruppe2 >= 1)
{
if(Gruppe1 == Gruppe1Tod || Gruppe2 == Gruppe2Tod)
{
Was für Werte bekommt denn Gruppe1Tod bzw Gruppe2Tod zugewiesen ? Wofür steht die Variable Gruppe1 bzw Gruppe2 ?
Ohne genauer zu wissen,wofür die Variablen stehen,kann man jetzt einfach nur wild drauf los raten.
Steht Gruppe1 bzw Gruppe2 für die Anzahl der Spieler,die noch in diesem Team am Leben sind ? Wofür steht dann aber Gruppe1Tod bzw Gruppe2Tod ? Für die Anzahl der Spieler,die bisher gestorben sind ?Mir kommt das ganze nämlich etwas unpraktisch vor. Einfacher wäre es doch,jeweils eine Variable pro Team anzulegen. Kommt ein Spieler im Team hinzu, erhöhen wir die Variable um 1. Stirbt einer oder verlässt das Spiel,wird 1 wieder abgezogen. Prüfen ob es Team leer ist,wäre dann "<Team1Spieler> == 0" bzw "<Team1Spieler> != 0" für vorhanden Spieler.
if(IstSpielerInTeam(playerid,1))
{
Gruppe1Tod++;
if(Gruppe2 == 1) // <- Wieso ist hier Grupp2 ?
{
Gruppe1Tod = 0;
Gruppe2Tod = 0;
Gruppe1Kills = 0;
Gruppe2Kills = 0;
Diese Abschnitte verstehe ich auch nicht. Wann wird denn Gruppe<X> auf 1 gesetzt , nur bei deinem Testbefehl :-O? Wäre auch gut,wenn du mal den Code postest bzw den Befehl,womit man regulär am Deathmatch teilnimmt. -
Ich habs dir doch schonmal erklaert
Du musst das Text: weglassen.
Quatsch,hat damit nichts zu tun.Angenommen du nimmst den Code von Templer aus diesem Post ( Ja, im format mit %.2f und nicht %d ) , dann müsstest du die Funktion "Tacho(playerid)" im Code definiert haben,bevor du sie zum ersten mal benutzt. Sprich,einfach nach oben in deinem Quellcode schieben.
Alternative könntest du auch einfach lediglich folgende Zeile irgendwo nach oben in deinen Quellcode ( Kopf ) einfügen:forward Float:Tacho(playerid);
Problem ist,dass der Compiler beim Compilieren noch nicht weiss,dass die Funktion Tacho einen Wert vom Typ Float zurück gibt und meckert deswegen.
-
Die ganzen Antworten schreibt natürlich auch Jemand Anderes
Wie unglaublich schlecht die Ausreden hier sind x'D. -
Hast aber Zeit hier den Thread zu erstellen und zu antworten.In der Zeit hätte man auch Googlen können:
http://www.google.de/search?q=…official&client=firefox-a
Ich versteh auch den weiteren Sinn deines Threads nicht.Du brauchst Jemanden der dir einen MySQL Verbindung mit VB aufbaut. Angenommen das macht Jemand,was hast du davon ?
Hättest du dann etwa wieder Zeit oder nicht. Falls du dann Zeit hast, ist der Thread mehr als bescheuert. Denn dann hättest es auch sofort selber machen können.
Falls du danach trotzdem immernoch keine Zeit hast,was bringt dir das Programm / der Code. -
Dann nimm dir halt die Zeit 0o.
-
Das stimmt nicht.
SendClientMessage(playerid, COLOR_RED, "Es laeuft schon eine Mission!");
Da steht nirgendwo,dass jemand anderes bereits eine Mission macht und deswegen keine mehr Möglich ist :/.
Ich hab es aber auch schon mit dem Code begründet.Da ist nirgendwo eine Limitierung drin. Außerdem geht probieren sowieso über studieren -
Völliger Quatsch.
Du könntest den Text aus so haben:
SendClientMessage(playerid, COLOR_RED, "Der Server schaltet sich in 5 Minuten automatisch ab");
Die Textnachricht bedeutet nichts,wenn der Code nicht das tut,was der Text aussagt.Das else mit dem Text gehört ja zu :
if(!Fahrschule[playerid][pmi_bAktiv]) {
Das heisst nur,dass der Spieler der den Startbefehl ausfürt,zur Zeit schon die Fahrprüfung macht.Nicht,dass Irgendjemand Anderes eine Fahrprüfung macht.
Ich kann mich nur zitieren.Der Text ist völlig egal.Den hast du dir sowieso ausgedacht. Du stellst dich wirklich total doof an ...
-
Völliger Quatsch.
Du könntest den Text aus so haben:
SendClientMessage(playerid, COLOR_RED, "Der Server schaltet sich in 5 Minuten automatisch ab");
Die Textnachricht bedeutet nichts,wenn der Code nicht das tut,was der Text aussagt.Das else mit dem Text gehört ja zu :
if(!Fahrschule[playerid][pmi_bAktiv]) {
Das heisst nur,dass der Spieler der den Startbefehl ausfürt,zur Zeit schon die Fahrprüfung macht.Nicht,dass Irgendjemand Anderes eine Fahrprüfung macht. -
Siehst du da eine Beschränkung,die das zur Zeit verhindert ? Ich nämlich nicht :/.
Spoiler anzeigen Wie auch,da ist nämlich keine. -
Na false stimmt aber mit Sicherheit nicht.Denn wenn beim Startbefehl die Variable auf false gesetzt wird,du aber nur den Spieler als Fahrschüler wahr nimmst bei OnPlayerEnterCheckpoint wenn die Variable auf true ist,kann es gar nicht funktionieren. Denn die Variable ist ja eh nie auf true.
http://forum.sa-mp.de/san-andr…ints-abfahren/#post102868
Wenn du dort nochmal schaust,da hab ich es immer auf true bei dem Startbefehl. Das es funktioniert ist selbstverständlich,ich stelle ja keine Tutorials rein die nicht funktionieren ( kann man nicht von Jedem behaupten :p ).//Edit:
Übrigens,ZitatWeiter so,du hast es fa
sst geschafft ! (%d / %d) -
Hättest dir auch gleich ein weiteres Tutorial von mir anschauen können zum Thema debuggen,dann hättest sehr schnell gemerkt wo der Fehler liegt.
Zeile 62 im PAWN-Tag
Fahrschule[playerid][pmi_bAktiv]=false;
Da muss schon mal true hin,nicht false.Denn sonst klappt die Abfrage bei OnPlayerEnterCheckpoint nicht,ob der Spieler gerade den Führerschein macht.
Denke du hast aber nicht den ganze Code gezeigt, denn so verschwindet der Checkpoint nämlich nie. -
In den Timer als Parameter für das Interval.
http://wiki.sa-mp.com/wiki/SetTimerDie Funktion Autofire sieht für mich auch fehlerhaft aus.
Function Autofire()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsAFeuer(i)) // <-- Wenn ein Spieler "IsAFeuer" ist ? Was soll n das sein :/
{
SendClientMessage(i, 0xFF0005FF, "------------Brand Information------------");
SendClientMessage(i, 0xF0F0F0FF, "Achtung: Der Burgershot am LSPD brennt!");
SendClientMessage(i, 0xF0F0F0FF, "Alle verfügbaren Einheiten zum Einsatzort");
AddFire(1504.2676,-1639.4884,13.2900); // Die ganzen Feuer die du erstellst, sind denke ich auch falsch. Angenommen es gibt mehr als 1 Spieler der "IsAFeuer"
AddFire(1496.4417,-1632.9219,13.4766); // ist, würdest du die Feuer mehrfach hinzufügen.Ist sicherlich nicht der Sinn der Sache.
AddFire(1500.5043,-1622.6830,13.4766); // feuer31
AddFire(1490.5072,-1618.4437,13.2900); // feuer41
AddFire(1479.8872,-1621.4332,13.4766); // feuer51
AddFire(1470.6744,-1626.3456,13.2900); // feuer61
AddFire(1466.5963,-1633.4565,13.2900); // feuer71
AddFire(1473.1447,-1647.5498,13.4766); // feuer81
AddFire(1478.6841,-1652.6525,13.2900); // feuer91
AddFire(374.7155,-192.8484,1000.6328); // feuer101
AddFire(374.7894,-186.6877,1000.6401); // feuer111
AddFire(373.9040,-181.0056,1000.6328); // feuer121
AddFire(378.0430,-182.1730,1000.6328); // feuer131
AddFire(379.2861,-190.3939,1000.6328); // feuer141
AddFire(1495.0134,-1652.5490,13.2900); // feuer151
AddFire(1486.4364,-1650.8251,13.2900); // feuer161
SetTimer("Autofire", 2400000, 0); // <-- wieso erstellt hier noch einen Timer ? Glaube kaum,dass das so gewollt ist.Du könntest ziemlich schnell,ziemlich viele Timer erstellen.
}
}
}
return 1;
} -
Unter "Downloads" in der Navigationsleiste wäre wohl am logischsten,meinst du nicht ?
http://sa-mp.com/download.php
Natürlich das Serverpaket. -
Dein Code ist genauso richtig, besser gesagt, du hast es sogar Ressourcensparender gemacht, da du die Klammern weggelassen hast, bei sizeof, muss man die nicht machen, aber man kann esmfg.
Selten sowas unglaublich dämliches gelesen. Wenn das Ressourcensparender bedeutet,dann sollten wir die Variablennamen auch am besten so kurz wie möglich halten ... . Denn damit sparen wir ein paar Bytes im Quellcode (!!!). -
Das ist möglich,hab ich schon 2x gesagt :-O.
Ob die Funktion nun vor dem Namen stock,public oder nichts stehen hat,ist egal.
Die Funktion von BlackAce funktioniert wie gesagt ja eh nicht,daher hier:
bla( text[] , sub[] ) {
new
i,
n;
while( ( i = strfind(text,sub,true,i ) ) != -1 ) {
i++;
n++;
}
return n;
}
Anwenden würde man sie so:
bla("hallo~n~wie~n~geht es dir?~n~lg","~n~");//Edit:
Muss nicht,kann.Halte ich für nicht nötig,könnte man aber ändern. -
Klar, wenn es zB eine User-Eingabe ist.
Nur kannst du den Text nicht mehr auslesen,sobald er nur noch auf dem Textdraw selber ist und dort zum Beispiel via SetString eingefügt wurde.