Ist es möglich, dass ein Spieler sich z.b. für 5 Sekunden nicht aus Bereich X,Y,Z bewegen kann?
Hoffe ihr versteht was ich meine.
Ist es möglich, dass ein Spieler sich z.b. für 5 Sekunden nicht aus Bereich X,Y,Z bewegen kann?
Hoffe ihr versteht was ich meine.
Alles anzeigenHallo,
Ich bekomme es nicht hin, ein GiveCash Befehl zu Scripten.. Mit GivePlayerCash wird das Geld sofort wieder abgezogen mit PlayerInfo[targetid][pCash] +=cash; passiert garnichts. Mein ganzer Code:
ocmd:givecash(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 5) // Das das nur Admin 2 Aufsteigen machen kann ;D
{
SendClientMessage(playerid, COLOR_CRVENA, "Du darfst diesen Befehl nicht benutzen!");
return 1;
}
new pname[24], cash, targetid, string[128];
if(sscanf(params,"ui",targetid, cash)) return SendClientMessage(playerid,COLOR_CRVENA,"USAGE: /givecash [playerid] [cash]");
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_CRVENA, "Fehler: Dieser Spieler ist nicht Online!");
GetPlayerName(targetid, pname, 24);
PlayerInfo[targetid][pCash] +=cash;
format(string, 128, "** ADMIN CASH: You have been given $%d.", cash);
SendClientMessage(targetid,0xFF00FFFF,string);
return 1;
}
Vielen Dank
PlayerInfo[targetid][pCash] += GivePlayerMoneyEx(targetid, cash);
Evtl so?
Serverseitiges Geld?
Vielen dank für die Bewertungen.
Habe auch direkt eine V2 gemacht und die Spiegelung hinzugefügt:
//Edit: Achja, ich weiß nicht, ob mans merkt, aber ich hab den Cinema4D Effekt versucht nachzumachen (Habe noch kein C4D und habs deswegen komplett mit PS CS2 gemacht).
//Edit2: Die Spiegelung ist verkehrt, habe das bereits behoben, kann es aber grad aus irgendeinem Grund nirgends hochladen. Denkt euch einfach, dass die Spiegelung richtig ist^^//Edit3: Behoben.
MfG
Sowas würd mir auch richtig gut als Signatur gefallen.
Geb dir mal 9/10, als Signatur wäre es noch besser, mach weiter.
Das Weiß ich auch ..
Was kommt dahin ?
Bei //for new bla bla
http://wiki.sa-mp.com/wiki/Loops
for(new i = 0; i < MAX_PLAYERS; i++)
Hilft mir leider nicht
Kannste die Sachen auch reinschreiben ?
MfG
Ne, die Sachen musst du schon selbst anpassen.
Die forschleife zu enden schreiben und deine eigene Adminabfrage bsp: Spieler[i][Adminlvl] > 0) { ... //i wegen der Schleife.
Guten Abend,
Ich bin gerade dabei einen Support Befehl zu Schreiben.
Wie mache ich das wenn jemand /Support eingibt, eine Nachricht an den Admin kommt ?
Und das er dann mit demjenigen Chatten kann. Es soll aber keiner sehen außer sie.
Bitte um Hilfe
Mfg
//for new bla bla
//{
//Abfrage ob Spieler connectet ist..
//{
//Abfrage, ob der Spieler Admin ist..
//{
//Hier Nachricht an den Admin senden..
//}
//}
//}
Hoffe ich konnte helfen.
//Edit: Noch etwas eingefügt.
Du formartierst ein und den selben string 5x?
Mit größe 30, würde dir empfehlen mit strcat zu arbeiten.
Ich glaub der String wird so zu kurz sein.
Ich bin grade Dabei das Fahrzeugleben abzuspeichern, und nen timer soll immer abfragen wie viel leben das fahrzeug hat, und wenn es unter 250.0 ist, dann soll er ne nachricht schicken, dafür brauch ich die schleife...
new Autos[10];
Auto[0] = AddStatic..
Auto[1] = AddStatic..
//Schleife
{
if(GetVehicleHealth(vehicleid) < 300)
{
SetVehicleHealth(Autos[i], 1000);
RepairCar(Autos[i]);
}
}
//Edit: Ungetestet, so ungefähr.
Alles anzeigenTag Leute,
wie funktioniert ne playerid-schleife mit for?
kenne nur die schleife, die an ALLE spieler gesendet wird
for(new i = 0; i<MAX_PLAYERS; i++)
Möchte nämlich nen Timer ohne Playerid erstellen, da sonst alles buggt...
MFG
Ic h möchte, nur ne schleife für playerid, nicht für alle spieler...
Denn benutzt einfach playerid?
Also ich find sie gut.
Naja, solltest halt noch etwas mehr Objekte einfügen (Sieht etwas leer aus :D)
Ansonsten 7/10
Alles anzeigenIch weis nicht ob es das ist was Du wolltest, aber teste das mal..
Habs nicht Kompiliert.. Also könnte Fehler geben, was ich nicht hoffe
stock TM(color,text[])
{
for(new playerid = 0; playerid<MAX_PLAYERS; playerid++){
if(Variable[playerid] >= 1){
SendClientMessage(playerid,color,text);
}
}
return 1;
}
Hoffe ich konnte helfen.
Greetz
#else
Erstmal danke für deine Hilfe.
SendClientMessage(playerid,color,text); //Würde Theoretisch so funktionieren?
//SCM wäre jetzt = TM(playerid, ROT, "TestTest");
//bzw bei:
SendClientMessageToAll(color,text);
SCMTA wäre jetzt = TM(ROT, "TestTest"); //So?
//Edit: Forschleife übersehen.
Werde es mal testen, danke.
//Edit: Jo scheint zu funktionieren. - Keine Errors, habe es noch bisschen angepasst. - Danke dir!
Irgendwie verstehe ich nicht ganz was Du möchtest, sorry...
Würdest Du es evtl. nochmal genauer erläutern was Du genau möchtest?
Greetz
#else
Naja, was ich möchte ist n eigenen Stock erstellen, der nur an die Spieler gesendet wird, wenn eine Variable auf 1 steht.
if(Variable(playerid) == 1)
{
SendClientMessageToAll(FARBE, "Nur an Spieler, mit Variablen-Wert 1!");
}
Also ich möchte sozusagen einen SendClientMessageToAll stock erstellen, der nur gesendet wird, wenn die jeweilige Variable auf 1 ist, bzw größer als 0.
Hoffe du verstehst es jetzt..
//Edit: Sowas ähnliches, wie der Stock, der eine Nachricht innerhalb eines bestimmten Radius sendet.
Bloß halt zu allen, falls die Variable > 0 ist, bzw. 1
Alles anzeigenBOMBER
Ich glaube Dein Code hat einige Fehler..
5*60 = 300.. Sprich 300Ms.. Wenn dann 5*60000 = 300000MS = 5 Minuten.
Ist unnötig da es von SAMP aus die Funktion "IsVehicleInUse" gibt.
Verwendung dafür wäre
if(IsVehicleInUse(vehicleid))
Dann die Schleife.. DIe ist auch ziemlich doof da diese so lange erhöht bis MAX_VEHICLES erreicht ist.
Dabei kann man es viel besser gestallten indem man
for(new i = 0; i<sizeof(Autos); i++)
Greetz
#else
P.s
Ich schreibe gleich nen kurzen Code...
Natürlich kann man es besser gestalten.
Habe ja auch oben extra dazu geschrieben: Ungetestet.
Hatte das nur schnell in 5 Minuten geschrieben & Die Funktion "IsVehicleInUse" kannte ich auch noch nicht, danke.
//Edit: Denke mal Ulbis Methode wäre die einfache, die Parameter von AddStaticVehi... zu nutzen, um die Autos zu respawnen.
wo kommt das forward hin Oo
Mach es mal lieber, mit dem RespawnDelay, wie es ulbi1990 meinte.
Forwards können überall deklariert werden..
Nach der letzten } vom Callback davor.. z.b:
public OnPlayerSpawn(playerid)
{
return 1;
}
forward bsp();
public bsp()
{
//Funktion..
}
//Edit kann auch oben im Gamemode forwarded werden.
Braucht man nicht so komplex und Resourcenunfreundlich zu machen.
Einfach den Respawndelay nutzen welcher bei den Funktionen AddStaticVehicleEx bzw. CreateVehicle vorhanden ist.
Daran hab ich garnicht gedacht, danke.
Naja, aber kann man damit auch einstellen, ob das Car benutzt ist?
Hallo zusammen. Ich habe nun meinen noobspawn fertig. nun möchte ich aber einstellen das wenn das fahrzeug mindestens 5 minten leer steht das es wieder ans seiner stelle spawnt o der noobspawn ist. kann mir wer weiter helfen ?
Ich werds dir mal versuchen zu erklären.
//Oben im Script:
new Autos[32]; //Anpassen..
Autos[0] = AddStaticVehic... //0, weil PAWN immer bei 0 anfängt zu zählen..
//OnGamemodeinit:
SetTimer("AutoRespawn", 5*60, true); //Wir erstellen einen Timer, 5*60 = 5x 60 Sek... = 5 Minuten..
//Public fürs Respawnen:
forward AutoRespawn();
public AutoRespawn(); //Timer wird nach 5 Minuten aufgerufen >>
{
for(new i = 0; i <MAX_VEHICLES; i++) //Erhöhe i bis = MAX_VEHICLES... (Durchgeht alle Autos..);
{
if(!IsVehicleUsed(Autos[i]))
{
SetVeicleToRespawn(Autos[i]); //Auto wird, respawnt, falls es nicht benutzt wird. :D
}
}
}
//Stock IsVehicleUsd (Überprüft, ob das Fahrzeug benutzt wird..);
stock IsVehicleUsed(vehicleid)
{
for(new playerid; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid) && GetPlayerVehicleID(playerid) == vehicleid)
{
return 1;
}
}
return 0;
}
Sollte funktionieren, ungetestet.
Guten Abend, an alle, habe mal ne kleine Frage zum Thema 'Stocks..'
stock Name(playerid)
{
new GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,sizeof(GetName));
return GetName;
}
Hier wird ja, der Name zurückgegeben. (Nicht grad die schlauste Methode, ich weiß :D)
Nun meine Frage, kann man SendClientMessage, auch in einen Stock schreiben? ungefähr so:
stock TM(color, text??);
if(bsp==1)
{
SendClientMessageToAll(Farbe, EINGABE / Abfrage?);
return SendClientMessageToAll(Farbe,EINGABE?/Abfrage?);
}
evtl so?
stock TM(color, text?)
{
//SendClientMessageToAll(color, text);?
//return SendClientMessageToAll(color, text); ?
}
Naja, also ob es gehen würde, wenn bsp auf 1 steht, denn eine TM (SCMToAll), zu senden mit Farbe & Text?
//Edit: Sorry, sollte stock TM, nicht new TM heißen.
//Edit²: Noch mal was umgeschrieben.
Alles anzeigenHallo Leute!
Ich würde gerne einen /stats Befehl in einem Dialog machen. Ich weiß aber leider nicht, wie ich ein
weitere Variable einfügen kann. Ich habe es geschafft, erstmal den Namen anzuzeigen, aber jetzt
weiß ich nicht wie ich das Geld noch hinzufügen soll. Habe es so probiert
stock SpielerName(playerid)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
return pname;
}
ocmd:stats(playerid,params[])
{
new str[200];
format(str,200,"==== Name: %s ====",SpielerName(playerid));
format(str,200,"==== Geld: %d ====",SpielerGeld(playerid));
ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Statistiken", str,"OK","");
return 1;
}
stock SpielerGeld(playerid)
{
new pmoney[MAX_PLAYER_NAME];
GetPlayerMoney(playerid, pmoney, sizeof(pmoney));
return pmoney;
}
Bekomme da aber Warnings:
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
Die Zeile:
GetPlayerMoney(playerid, pmoney, sizeof(pmoney));
Wie füge ich nun noch etwas anderes hinzu? ( In meinem Beispiel Geld )
Wieso speicherst du das Geld in einem Stock?
format(str,200,"==== Geld: %i ====",SpielerGeld(playerid)); //Ändern wir erst mal auf nen Interger.
//Nun zu dem Stock...
stock SpielerGeld(playerid)
{
GetPlayerMoney(playerid); //Wir lesen den Wert des Geldes aus..
return GetPlayerMoney(playerid); //Und geben ihn über den Stock zurück..
}
Sollte funktionieren...
Welche Probleme kommen denn?
Errors / Warnings?
Erklär mal bitte genauer, was nicht geht.
Um das mal klarzustellen, du kannst im Callback OnPlayerDeath meines Wissens nach keine Waffen vergeben.
Dafür wird OnPlayerSpawn(playerid) {} benutzt..
OnPlayerSpawn(playerid) {
//Abfrage, welche Streak er hat... {
//Waffen verteilen...
//}
return 1;
}
Hoffe das ist einigermaßen verstehbar.
//Edit umgeschrieben / verbessert