2/10 für die Mühe
1. Total sinnlos
2. Die Umsetzung ist wirklich miserabel...
Du erstellst und formatierst extra einen String, obwohl du das nichtmal brauchst.
Dominik: Es ist mir neu, dass man in SCM \n benutzen kann...
2/10 für die Mühe
1. Total sinnlos
2. Die Umsetzung ist wirklich miserabel...
Du erstellst und formatierst extra einen String, obwohl du das nichtmal brauchst.
Dominik: Es ist mir neu, dass man in SCM \n benutzen kann...
Ehm... eine Schleife belastet den Server und ein Array noch viel mehr.
So umgehst du alles, habs ja auch nochmal editiert.
Es geht ums Prinzip: Du verbreitest hier einen falschen und schlimmen Scripting-Stil.
Das was du da gemacht hast ist absolute Scheiße... du fragst 12 Slots ab, um nur einen auszulesen?
Hau deinen Server doch direkt kurz und klein...
einfach:
new weapon;
GetPlayerWeaponData(playerid, 2, weapon);
if(weapon == 22)
{
//code
}
Und die ammo muss man auch nicht abfragen... wenn man keine Ahnung hat, sollte man diese 0 Ahnung nicht auch noch verbreiten.
€: Hinweis zu ammo
Keine Garantie, ungetestet. Jenachdem Fehler posten!
new farbe[MAX_PLAYERS]; // 0= rot, 1 = blau
new bool:einsatz[MAX_PLAYERS];
new etimer[MAX_PLAYERS];
public OnPlayerConnect(playerid) {
farbe[playerid] = 0; // Standart-Farbe = rot
einsatz[playerid] = false;
SetPlayerColor(playerid, 0xFF0000FF); // Standart-Farbe = rot
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/einsatz",cmdtext, true) == 0)
{
if(!einsatz[playerid]) { // falls noch nicht im Einsatz
einsatz[playerid] = true; // in Einsatz versetzen
etimer[playerid] = SetTimerEx("einsatztimer", 1000, 1, "d", playerid);
return 1;
} else { // falls Einsatz
farbe[playerid] = 0; // Farbe = rot
SetPlayerColor(playerid, 0xFF0000FF);
KillTimer(etimer[playerid]); // Timer killen
einsatz[playerid] = false; // Einsatz beenden
}
return 1;
}
return 0;
}
forward einsatztimer(playerid);
public einsatztimer(playerid) {
if(farbe[playerid] == 0) { // Falls Farbe = rot
farbe[playerid] = 1; // Farbe = blau
SetPlayerColor(playerid, 0x0000FFFF);
} else { // Falls Farbe = blau
farbe[playerid] = 0; // Farbe = rot
SetPlayerColor(playerid, 0xFF0000FF);
}
return 1;
}
Ich nehme an, wie man die Farbe ändert weißt du. Und wie Timer funktionieren wohl hoffentlich auch?
Ansonsten hilft da das SAMP-Wiki.
Dann einfach bei /einsatz einen Timer erstellen, der die Farbe des Spielers immer in rot und blau (abwechselnd) ändert.
Gibt man nochmal /einsatz ein, wird der Timer gekillt und die Farbe des Spielers wieder auf rot gesetzt.
Komisches klacken und ticken hört sich eher nach einem Lüfter an.
Vielleicht irgendwas drin, oder einfach nur total verstaubt. Einfach mal alle reinigen.
Ansonsten könnte es eventuell noch die Festplatte sein, obwohl der Moment, in dem das Klacken auftritt, dazu eher weniger passt. Daran würde ich dann aber nichts machen, sondern einen Fachmann dran lassen oder halt neu kaufen.
Naja,
Vorstellung finde ich eigentlich recht gut.
Bloß sind die Features keine wirklichen Features. Bis auf's Orten, das finde ich toll
Die Stadthalle gefällt mir auch.
Was mich etwas stört, ist dass direkt im Thementitel ein Fehler drin ist.
MFG
Ben
Indem du supmobil[playerid] immer auf 1 bzw. 0 setzt, manipulierst du damit die Fahrzeugid.
Letztendlich setzt du den Spieler dann immer in das Fahzeug mit der ID 1 oder 0.
Nimm am besten verschiedene Variablen für das Fahrzeug, und die Abfrage, ob er eins hat.
Einen Dialog zeigen?
Vielleicht einfach mal ein richtiges Login-System machen? Dort ist nämlich kaum was davon zu sehen.
if(pickupid == ammuenter)
{
new stunde,minute,sekunde;
gettime(stunde,minute,sekunde);
if(hour >= 12)
{
SetPlayerPos(playerid,286.148986,-40.644397,1001.515625);
SetPlayerInterior(playerid,1);
GameTextForPlayer(playerid,"~g~Du hast den Ammunation betreten.",3000,3);
return 1;
}
else
{
SendClientMessage(playerid, -1, "Geschlossen, Komme zwischen 22 Uhr und 8 Uhr wieder.");
return 1;
}
}
Jetzt bin ich so nett, und geb dir einfach den Cop&Paste-Code. Darauf wolltest du wohl hinaus.
Kommt davon, wenn man einfach Copy&Paste macht -.-
Beheb die Fehler doch selbst. Wahrscheinlich hast du X, Y, Z so stehen gelassen...
Probier das doch so aus... das klappt zu 100%, oder vertraust du mir nicht?
Denk doch mal nach... 24 Uhr wird dir keine Uhr der Welt anzeigen.
Denn nach 23:59 kommt 00:00.
Und 0 ist kleiner als 12, also durch stunde >= 10 ausgeschlossen.
Doch...
Denn 24 Uhr ist doch das selbe wie 0 Uhr.
Und der Server wird dir als Stunde niemals 24 sondern dann 0 zurückgeben. Und 0 ist für gewöhnlich kleiner als 12, so hab ich das zumindest in Erinnerung.
Dann nimm den, den ich geschrieben habe:
if(stunde >= 12) {
Vielleicht mal den Code herzeigen?
Von OnPlayerConnect und von OnDialogResponse.
Bei letzterem aber nur die Passage, wo es auch um den Login-Dialog geht.
Wenn du noch "|| stunde == 0" reinmachst, dann ja.
Lässt du es raus, macht er um Punkt 0 Uhr dicht.
Zeigt er denn auch die Nachrichten weiter unten an? Oder lässt er die auch weg?
Warum das "stunde == 0"?
Dann hat er von 0 bis um 1 auch noch auf.
if(stunde >= 12) {
Ist 12 - 0 Uhr. 24 Uhr ist ja = 0 Uhr.
//Edit: Nein es gibt kein 25 Uhr <.<
Welche ID gibst du denn immer ein, deine eigene?