Nein, es gibt keine andere Möglichkeit als einen Timer, aber du benötigst ja nur 1nen, bzw wenn du schon einen hast, kannst du alles auf 1nen Timer reduzieren ![]()
mfg. ![]()
Nein, es gibt keine andere Möglichkeit als einen Timer, aber du benötigst ja nur 1nen, bzw wenn du schon einen hast, kannst du alles auf 1nen Timer reduzieren ![]()
mfg. ![]()
Du kannst auch mit SetTimerEx arbeiten, dann ist eine Schleife nicht nötig ! ![]()
Bsp:
//Bei OnPlayerConnect
SetTimerEx("Up", 1000, 1, "i", playerid);
//Callback
forward Up(playerid);
public Up(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, X, Y, Z)) //Natürlich ersetzen
{
MoveObject(...);
}
return 1;
}
mfg. ![]()
for(new i; i<100; i++)
{
if(!IsPlayerConnected(i)) continue;
if(!IsPlayerInAnyVehicle(i)) continue;
if(GetPlayerVehicleID(i) == GetPlayerVehicleID(playerid))
{
PlayAudioStreamForPlayer(i, "http....");
}
}
mfg. ![]()
Wie wäre es mit einem random System:
new skin = random(299);
SetPlayerSkin(playerid, skin);
oder irgentwie sowas evtl:
new skin = (playerid+70);
SetPlayerSkin(playerid, skin);
Alles möglich ![]()
mfg. ![]()
if(!IsPlayerInFrakt(playerid))return SendClientMessage(playerid,ROT,"Du bist kein Cop!");
Du hast das ! da vergessen ![]()
mfg. ![]()
Schreibe es so:
forward Audio_OnSetPack(audiopack[]);
public Audio_OnSetPack(audiopack[])
Du hast den forward vergessen ![]()
mfg. ![]()
So ein Abschlepp System ist ganz simpel, hier schreib doch kurz eins selber: AttachTrailerToVehicle
mfg. ![]()
Es ist schneller als DCMD und ZCMD keine Ahnung.
Jedoch ist es NICHT das langsamste und OCMD ist auch sehr übersichtlich
Du weißt aber, dass kleinerOpa (der schreiber von OCMD) so ziemlich viel bei ZCMD abgeschaut hat und nur das "COMMAND" zu "ocmd" geändert hat ![]()
und ich finde ZCMD besser, da es zwei nützliche Callbacks anstelle von OnPlayerCommandText hat und man so nicht auf Gross-/Kleinschreibung achten muss !
mfg. ![]()
strcmp ist eine Standart Funktion die erstmal garnichts mit Befehlen zu tun hat, sie vergleicht nur 2 Strings miteinander und prüft ob diese gleich sind.
Aber was ocmd, zcmd, dcmd angeht, dann muss ich dir recht geben das das definitiv zu viele xcmds sind ![]()
Dennoch hat jedes seine Vorteile, bis auf ocmd, was definitiv das langsamste ist ![]()
dcmd = Ressourcen sparend
zcmd = schnell
und die anderen cmd Arten haben auch ihre Vorteile ![]()
mfg. ![]()
Warum sollte das bei so einer Abfrage von Nöten sein?
Naja, ganz einfach, weil es eine for-Schleife ist, und diese fängt bei 0 an und endet bei MAX_PLAYERS und wenn ein Spieler nicht "connected" ist, springt er direkt auf den nächsten Spieler ![]()
Das ist ressourcen freundlicher ![]()
mfg. ![]()
So sollte es eigentlich funktionieren, "FARBE" durch deine Farbe ersetzen und gut ist.
Nein, das ist falsch !
Mache es so:
ocmd:a(playerid,params[])
{
new inhalt[140];
if(sscanf(params,"s",inhalt)) return SCM(playerid,FARBE,"Nutze: /a [TEXT]");
format(inhalt,140,"[%s %s: %s]",AdminRankName(playerid),SpielerName(playerid),inhalt);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(!IstSpielerAdmin(i,1))return SCM(i,FARBE,"Du bist kein Admin.");
SendClientMessage(i,FARBE,inhalt);
}
return 1;
}
mfg. ![]()
@Rocky
wenn man mit zcmd oder dcmd oder ocmd arbeitet...verwendet man kein strtok sondern sscanf ![]()
mfg. ![]()
//Edit: Das muss so aussehen:
COMMAND:v(playerid, params[])
{
new String[200], vehicle;
new Float:x, Float:y, Float:z;
if(sscanf(params,"d",vehicle)) return SendClientMessage(playerid, l_red, "Benutze: /v [Fahrzeug Name]");
if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, l_red, "Dieser Fahrzeug Name wurde nicht gefunden.");
new Float:a;
GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);
if(IsPlayerInAnyVehicle(playerid) == 1)
{
GetXYInFrontOfPlayer(playerid, x, y, 8);
}
else
{
GetXYInFrontOfPlayer(playerid, x, y, 5);
}
new PlayersVehicle = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);
LinkVehicleToInterior(PlayersVehicle, GetPlayerInterior(playerid));
format(String, sizeof(String), "Du hast dir ein %s gespawnt!", aVehicleNames[vehicle - 400]);
SendClientMessage(playerid, l_green, String);
return 1;
}
Der Inhalt, also was in diesem Command steht ist ziemlicher Schwachsinn teilweise, aber so müsste das aussehen ![]()
Sicher, dass die Variable "realchat" den Wert 1 hat und das gPlayerLogged[playerid], wenn man sich einloggt auf 1 gesetzt wird ?
Wenn das beides auf 1 ist, bin ich zu faul die 1000 Zeilen durchzugehen und nach Fehlern zu suchen !
Tut mir leid ![]()
mfg. ![]()
Kommt irgenteine spezielle Nachricht wenn man etwas eintippen will ?
Poste mal den gesamten Callback OnPlayerText ![]()
mfg. ![]()
Hey,dank Kaliber habe ich jetzt ein regi sys...
Moment, du verwechselst da etwas, ich habe dir lediglich 1nen Error behoben
Das register System haste selber geschrieben !
(Ich würde das nämlich so NIE machen !)
mfg. ![]()
if(GetPlayerMoney(playerid) < summe) return SendClientMessage(playerid, rot,"Du hast nicht genügend Geld !"); //Summe bspweise mit 1000 ersetzen halt der Geldsumme die der Spieler haben muss
mfg. ![]()
Ja, ich helfe dir per TV, sende mir deine Daten per PN ![]()
mfg. ![]()