Ich weiß zwar nicht was genau du hier zusammen rechnest aber du hast schon Recht es dauert etwas. Es ist aber mehr oder weniger positiv weil es bei jeder Fraktion das gleiche ist (Copy + Paste)
Es gibt bestimmt andere Möglichkeiten genauso, mit stock / public zusammenarbeiten aber soweit ich weiß glaube ich dass deine angefangene Methode die "einfachste" ist
Beiträge von D4rkCl3ric
-
-
Ach Ich hab dir bisschen im gehirn rumgemischt, Tut mir Leid
variable = CreatePickup(.....); // Modelid, Position usw bleibt gleichAnsonsten stimmt alles.
-
Es wäre aber nicht Falsch wenn du es so schreiben würdest wie du bisher es geschrieben hast. Flaggen kannst du mit SetPlayerMapIcon spawnen lassen und mit SetPlayerScore die Punkte verteilen, oder du speicherst die Punkte auf eine eigene Variable und setzt diese wieder auf 0 wenn jemand 100 Punkte erreicht
-
Wenn du kein pickup haben willst, dan kannst du das System vergessen. Ein pickup ist nichts weiteres als ein Objekt welches auf dem Boden liegt, wo wenn ein Spieler darüber rennt etwas passiert. In deinem Fall wäre es dass der Spieler eine Waffe bekommt.
Außerdem habe ich mich oben verschrieben du musst "CreatePickup(....)" schreiben. Es wird sich daran überhaupt nichts ändern außer dass du es aufheben kannst und es sich auf der stelle drehen wird// Edit text hinzugefügt.
-
Ich bin mir nicht sicher, aber vielleicht hätte ich da ein paar Lösungsvorschläge:
1. Vielleicht hast du den Ordner "Accounts" in den Scriptfiles nicht angelegt.
2. Versuch mal aus dem:
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
das zu machen:
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.datei",name);wenn das auch nicht klappt hätte ich den letzten Lösungsvorschlag:
forward Register(playerid,Key[]);und danach anstatt stock:
public Register(playerid,Key[])
{
}
Hoffentlich hilft etwas -
Der Spieler muss unter "OnPlayerDeath" auf seiner Position (GetPlayerPos(playerid,x,y,z)) eine Waffe droppen (CreateObject(.....)) und du musst dan unter OnPlayerPickUpPickup die Waffenid (GetPlayerWeapon(playerid,WaffenID) und die Munition (GetPlayerAmmo(playerid)) Abfragen. Und wenn alles zutrifft gibst du ihm einfach via GivePlayerWeapon(playerid,waffenid,munition) die jeweilige Waffe
-
Im Script sind die Preise
ich weiß nicht genau wie es aussieht aber es ist mit den Autohäusern gespeichert, es sieht ungefähr so aus:
// Autohaus
{2,451,5000},
{2,522,20000}Die 2 ist das Autohaus, Meine 2 AutoIDs 451 und 522 (Turismo und NRG) und rechts davon steht der preis
-
Das mit den Teleport Befehlen wirst du wohl selbst auf die Reihe kriegen müssen.
if(IsPlayerImAdminJail(playerid)) return SendClientMessage(playerid,COLOR,"Du bist im Adminjail du darfst keine Teleportbefehle benutzen");
Sonst ist der Befehl eigendlich ziemlich einfach:
Irgendwo ganz oben folgendes:
forward AdminJail(playerid);Dannach:
ocmd:adminjail(playerid,params[])
{
new pID,Zeit;
if(sscanf(params, "ui", pID, Zeit)) return SendClientMessage(playerid,COLOR,"Benutze: /adminjail [playerid] [Zeit in Minuten]");SetPlayerPos(playerid,x,y,z);
SetPlayerInterior(playerid, interiorid);
Zeit = Zeit * 60000;
SetTimerEx("AdminJail", Zeit, 0, "i", playerid);
return 1;
}Und zum Schluss:
public AdminJail(playerid)
{
SpawnPlayer(playerid);
} -
Sorry bin noch bischen zu dumm dafür
Sag sowas doch gleich erleichtert uns ne menge arbeit haha nur Spaß, wir waren alle mal Anfänger
Okai also:
Dan fügen wir mal alle Funktionen zusammen was wir heute so gelernt haben.
forward Event();
new Eventvar = 0;
forward warten();
new wartenvar = 0;if (strcmp(cmd, "/Event", true) == 0)
{
if(Eventvar == 1) return SendClientMessage(playerid,COLOR_WHITE,"Dieser Befehl kann nur alle 20min benutzt werden!");
if(wartenvar == 2) return SendClientMessage(playerid, COLOR_WHITE,"Du hast das Event verpasst!");
if(wartenvar == 1)
{
// Das Event wurde gestartet und für 60 Sekunden kannst du nun hier alles einfügen was passieren soll.
// z.B Wenn jemand /Event eingibt: SetPlayerPos(playerid,x,y,z);
}
wartenvar = 1;
SetTimer("warten", 60000, 0);
return 1;
}public Event()
{
Eventvar = 0;
wartenvar = 0;
return 1;
}public warten()
{
wartenvar = 2;
SetTimer("Event",1200000,0);
return 1;
}Hier hast du sozusagen den kompletten Befehl, ich muss hoffentlich nicht erwähnen dass du "public Event" und "public warten" irgendwo ganz unten hinpacken sollst
MfG.
D4rkCl3ric// Edit PWN vergessen
-
Unter OnGameModeInit einen permanenten SetTimer einsetzen.
forward FUNKTION();SetTimer("FUNKTION",1200000,1); // 1,2Mio = 20min
public FUNKTION()
{
// Hier passiert das was alle 20min passieren soll
}// Edit Timer
-
Also entweder fügst du es so ein wie Kaliber es geschrieben hat (sinnvolle Methode)
oder du erstellst einen neuen Befehl so wie du es wolltest wo man als RCON Admin eingeloggt sein muss um den zu Benutzen:ocmd:i(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROT,"Du bist kein RCON Admin");new MSG[255],Text[255] ;
if(sscanf(params,"s",Text))return SendClientMessage(playerid,ROT,"Fehler: /i Text");
format(MSG,sizeof(MSG)," ((Admin %s: %s))",SpielerName(playerid), Text);
for(new i=0; i<GetMaxPlayers(); i++)
{
SendClientMessage(i,GELB,MSG);
}
return 1;
} -
Tony bei deinem "ShowPlayerDialog" würde ein Warning kommen.
"Numbers of Arguments doesn't match definition"
und damit du eine direkte Antwort darauf bekommst: Nein es wird nicht klappen -
Auch nicht wenn du ein Auto mit /veh erstellt hast und dieses dannach löscht? Könnte auch eine ID Verschiebung verursachen
-
Das kommt aufs ganze Script, d.h dort wo du all deine "#define's" hast. entweder ganz oben oder ganz unten
-
Natürlich das habe ich gar nicht bedacht. Du benutzt bestimmt "streamer" plugin, du musst ihn updaten auf den neuesten Stand bringen dannach klappt wieder alles. Ein großes Danke an DayNight
-
if(strcmp(cmd,"/carsell",true)==0)
{
for(new i = 0; i < sizeof Autohaus; i++)
{
CreatePickup(1239,1,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz],-1);
if(IsPlayerInRangeOfPoint(10,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz]))
{
for(new x=0; x<6; x++)
{
if(GetPlayerVehicleID(playerid)==Spielercar[playerid][x])
{
GivePlayerMoney(playerid,Autos[playerid][x][Preis]/2);
}
else
{
return SendClientMessage(playerid,ROT,"Das ist nicht dein Fahrzeug!");
}
}
new Autodatei[100];
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i);
if(dini_Exists(Autodatei))
{
dini_Remove(Autodatei);
GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
}
}
return 1;
}
}Hier, so sollte es klappen
-
Oder es kann auch an einem Filterscripter bzw. Plugin liegen. Nimm mal alle Plugins/Filterscripts raus und teste sie nacheinander durch.
-
unter deinen /Event befehl, wenn ich das richtig gelesen habe
-
Welches Command System benutzt du? Das ganz normale oder benutzt du ocmd,dcmd,zcmd,...
oder es kann auch sein dass du meinen "if(strcmp(cmdtext,"/maske",true) == 0)" Befehl nicht unter OnPlayerCommandText gepackt hast -
if(strcmp(cmd,"/carsell",true)==0)
{
for(new i = 0; i < sizeof Autohaus; i++)
{
CreatePickup(1239,1,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz],-1);
if(IsPlayerInRangeOfPoint(10,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz]))
{
for(new x=0; x<6; x++){ // 2 mal i definiert, mach hier daraus z.B ein X
if(GetPlayerVehicleID(playerid)==Spielercar[playerid][i])
{
GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
}
return SendClientMessage(playerid,ROT,"Das ist nicht dein Fahrzeug!");
new Autodatei[100];
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i);
if(dini_Exists(Autodatei))
{
dini_Remove(Autodatei); // 1. dini_Remove großes "R", 2. hast du ein Semicolon vergessen (einfaches ; am Ende)
GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
}
else
{
format(Autodatei3,sizeof(Autodatei2),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i); // Autodatei ist wohl noch nicht erstellt (dini_Create als Tipp ^^)
}
}
else
SendClientMessage(playerid,WEIß,"Du bist bei keinem Autohaus!");
}
return 1;
}
}Das waren mal alle Fehler die ich auf den 1. Blick gesehen habe, Ich hoffe ich konnte dir helfen
// Edit PWN eingefügt