Und zusätzlich noch alle ca. 5min ein "Backup" erstellen, sodass der Spieler
immer sein aktuelles sieht ( Ingameanzeige = Variable )?
Und auch in diesem Zyklus das Geld speichern, falls der Gamemode abgschmieren sollte?
Wenn ein GMX kommt, müsste ich davor aber auch alles nochmal speichern,
also ein Command reinmachen, oder ins GMX einbinden?
Beiträge von Marc1706
-
-
Hallo Breadfishs,
Ich brauche mal eure Meinung. Ich sitze zurzeit an einem Reallife Gamemode (Selfmade) und möchte euch über eine Idee
von mir befragen, wie ihr diese findet...Anfangs war das mit dem Geld ganz simpel: Beim Ausloggen speicherte er das Geld, was mir aber
von Anfang an zu unsicher war.Dann habe ich überlegt folgendes zu machen:
Das Geld soll nur gespeichert werden, wenn eine Ausgabe / Transaktion durchgeführt wird!Sobald der Spieler etwas kauft, wird sein Geld aus der Spielerdatei ausgelesen, ihm als sein Saldo
im Spiel angezeigt und anschließend wird der Betrag abgezogen. Nachdem abziehen, wird das Geld
wieder per Dini in die Spielerdatei geschrieben...Nun kommt das Problem:
Wenn der Spieler in der Spielerdatei 100$ hat, aber durch den ModSobeit auf der Hand 100000$ hat und ich
möchte ihm als Saldo 100$ setzen, muss ich dann erst das gesamte geld abziehen und anschließend das richtige
zuweisen? Oder kann ich den Barsaldo direkt mit einem Befehl auf 100$ setzen?Außerdem habe ich überlegt, dass während einem Kauf / Tausch / Whatever, eine Geldsperre per PVar gesetzt wird,
die bei jedem Kauf / Tausch... abgefragt wird, ob sie aktiv ist. Dadurch können sich dann keine Geldveränderungen
überschneiden und kein Geldbug entsteht ( imm Sinne von mehr oder weniger ).Würde mich über eine Antwort freuen
Lg, Marc1706
PS: Falls diese Idee irgendwo schon eingebaut ist, entschuldige ich mich vielmals.
Ich habe es aber wirklich nirgends geklaut! Es entstand in meinem Kopf. -
Hallo nochmal!
Erstmal herzlichen Dank für eure Hilfe!
Ich hatte vorher dieses Script (selbsgeschrieben) aber es kam immer was anderes xD
/**/dcmd_o(playerid,params[])
/**/{
/**/ new string[128],name[MAX_PLAYERS],buchstaben[128];////hier länge vom text 128 max. zeichen
/**/ {
/**/ if(sscanf(params, "s",buchstaben)) return SendClientMessage(playerid, ROT, "OOC-Fehler: Verwendung: /o [Nachricht]");
/**/ {
/**/ new playermoney;
/**/ GetPlayerMoney(playerid,playermoney,sizeof(playermoney));
/**/ if(oocoff == 0)
/**/ {
if (playermoney < 150)
{
SendClientMessage(playerid,GRÜN,"Du hast nicht genug Geld!");
}
//else if (playermoney >= 150)
//{
/**/ GetPlayerName(playerid,name,sizeof name);
/**/ format(string,sizeof string,"(( %s: %s ))",name,buchstaben);
/**/ SendClientMessageToAll(0xFF98FFFF,string);
SendClientMessage(playerid,GRÜN,"Du zahlst 150$ für den OOC-Chat!");
GivePlayerMoney(playerid,-150);
//}
/**/ }
/**/ else if(oocoff == 1)
/**/ {
/**/ GameTextForPlayer(playerid,"~y~OOC~w~-~b~Chat ~w~ist~n~~r~DEAKTIVIERT!",1500,3);
/**/ }
/**/ }
/**/ }
/**/ return 1;
/**/} -
Hallihallo,
ich arbeite momentan an einem Selfmade und möchte mir gerne einmal das
normalen Chat ( Name sagt: Hey ) und den O-Chat Script von dem Standart-GF anschauen.
[ Habe denhier genommen: http://forum.sa-mp.com/showthread.php?t=7797 ]Könntet ihr mir bitte sagen, in welcher Linie ich ihn finde?
Ich suche seit ca. 45min nur nach diesen beiden und nichts gefunden!Herzlichen Dank schonmal!
MfG, Marc1706 -
Speicher bei jedem seine SkinID in die Spielerdatei und mach dann wenn z.b. ein Neuling ein Skin wählen will eine Abfrage, ob bei rigendwem diese SkinID schon in der Datei steht... ( Benutze dashier, wenn das auch gehen soll, wenn kein anderer on ist! )
Wenn du das machen willst, wenn mehrere on sind, machst du die Abfrage einfach ganz normal, ob jemand die gleiche SKINID Hat...
-
Hallo liebe Community,
ich habe folgendes Problem:
Ich bastle momentan an einem Selfmade und bin an einer Stelle angekommen, bei der ich wirklich Probleme
bekomme...Dashier ist mein LoadAccount Stock:
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
SetPVarInt(playerid,"Banned",dini_Int(Spielerdatei,"Banned"));
SetPVarInt(playerid,"AdminDuty",dini_Int(Spielerdatei,"AdminDuty"));
SetPVarInt(playerid,"Cop",dini_Int(Spielerdatei,"Cop"));
SetPVarInt(playerid,"Cabdriver",dini_Int(Spielerdatei,"Cabdriver"));
SetPVarInt(playerid,"Adminvilla",dini_Int(Spielerdatei,"Adminvilla"));
SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
SetPVarInt(playerid,"loggedin",1);
//SpielerInfo[playerid][Adminlevel]=dini_Int(Spielerdatei,"Adminlevel");
//SpielerInfo[playerid][Fraktion]=dini_Int(Spielerdatei,"Fraktion");
return 1;
}Und dashier mein SpielerSpeichern Stock:
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
//dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(Spielerdatei,"AdminDuty",GetPVarInt(playerid,"AdminDuty"));
dini_IntSet(Spielerdatei,"Banned",GetPVarInt(playerid,"Banned"));
dini_IntSet(Spielerdatei,"Adminvilla",GetPVarInt(playerid,"Adminvilla"));
dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
dini_IntSet(Spielerdatei,"Cop",GetPVarInt(playerid,"Cop"));
dini_IntSet(Spielerdatei,"Cabdriver",GetPVarInt(playerid,"Cabdriver"));
}
return 1;
}Wenn ich nun jetzt zum Beispiel einen Admincommand machen möchte,
benutze ich folgendes...
stock isPlayerAnAdmin(playerid,rang)
{
if(GetPVarInt(playerid,"Adminlevel")>=rang) return 1;
return 0;
}Und das setze ich dann folgendermaßen in einem Command um...
/**/if(strcmp(cmdtext,"/tbtor", true)==0)
/**/{
/**/ if(isPlayerAnAdmin(playerid,2) || isPlayerAnCabdriver(playerid,1))
/**/ {
/**/ MoveObject(taxibasetor,1811.3444824219,-1885.7247314453,7,4.0);
/**/ SetTimer("taxibasetorzu",6000,0);
/**/ //SendClientMessage(playerid,GRÜN,"Zenrale: Die LSPD-Einfahrt wurde geöffnet");
/**/ GameTextForPlayer(playerid,"~y~Taxibase-Einfahrt~n~~g~GEOEFFNET!",1000,3);
/**/ return 1;
/**/ }
/**/ SendClientMessage(playerid,ROT,"Du bist kein Taxifahrer oder Supporter/Admin");
/**/ return 1;
/**/}Mein jetziges Problem ist, dass ich gerne in meiner Spielerdatei nun den Wert "AdminDuty" benutzen möchte
( 1 = Duty // 0 = UnDuty ).Ich möchte jetzt einen Befehl machen, der folgendermaßen aufgebaut ist.
Wenn die Variable "AdminDuty" in der Spielerdatei 0 ist, dann soll er sie auf 1 setzen.
Und wenn die Variable "AdminDuty" in der Spielerdatei 1 ist, dann soll er sie auf 0 setzen.Ich bräuchte nur diese Abfrage. Den Rest bekomme ich dann wahrscheinlich alleine hin.
Ja ich weiß, dass diese Methode nicht gerade modern ist und es mit einem Teamsystem und Rangsystem oder
so ähnliches leichter währe, aber ich möchte es gerne so weiterhin machen.
Ich will was neues versuchenWürde mich über eine Hilfreiche Antwort sehr freuen.
Vielen Dank!!!!!!MfG Marc1706
-
Es gibt zwei Möglichkeiten, einem Spieler Waffen am Spawn zu geben...
1. Direkt bei AddPlayerClass
AddPlayerClass(21, 1958.3783, 1343.1572, 15.3746, 269.1425,WAFFE1, MUNNIWAFFE1, WAFFE2, MUNIWAFFE2, WAFFE3, MUNIWAFFE3);
Und so weiter...2. Per GivePlayerWeapon...
Bau einfach ganz am Ende des Publics OnPlayerSpawn folgendes ein...
GivePlayerWapon(playerid,WAFFENID1,MUNITION1)
GivePlayerWapon(playerid,WAFFENID2,MUNITION2)
GivePlayerWapon(playerid,WAFFENID3,MUNITION3)Ich hoffe ich konnte helfen
-
Das ist doch eigentlich ganz Einfach.
Du machst einen Befehl (z.b. mit dcmd)
und fragst als erstes das Adminlevel ab oder ob er ein Admin ist (isPlayerAdmin = RCON Admin! )
Anschließend benennst du die Variablen etc. und setzt dann den Score des Spielers auf 3
und gibst ihm das Geld.Wenn du willst, kann ich dir dabei helfen.
Skype: marc-1706
-
Ja, aber ich muss ja die Länge vom Text irgendwie auf eine bestimmte Länge setzten, sodass man die )) am Ende noch sieht oder
-
Liebe Community,
ich habe hier ein OOC-Chat System, beidem ich ein Problem habe...
/**////////////////////////////////////////////////////////////////////////////
/**///////// OOC DCMD CHAT START //////////////////////////////////////////////
/**////////////////////////////////////////////////////////////////////////////
/**/dcmd_o(playerid,params[])
/**/{
/**/ new string[128],name[MAX_PLAYERS],buchstaben[128];////hier länge vom text 128 max. zeichen
/**/ {
/**/ if(sscanf(params, "s",buchstaben)) return SendClientMessage(playerid, ROT, "OOC-Fehler: Verwendung: /o[Nachricht]");
/**/ {
/**/ if(oocoff == 0)
/**/ {
/**/ GetPlayerName(playerid,name,sizeof name);
/**/ format(string,sizeof string,"(( %s: %s ))",name,buchstaben);
/**/ SendClientMessageToAll(0xFF98FFFF,string);
/**/ }
/**/ else if(oocoff == 1)
/**/ {
/**/ GameTextForPlayer(playerid,"~y~OOC~w~-~b~Chat ~w~ist~n~~r~DEAKTIVIERT!",1500,3);
/**/ }
/**/ }
/**/ }
/**/ return 1;
/**/}
/**////////////////////////////////////////////////////////////////////////////
/**///////// OOC DCMD CHAT ENDE ///////////////////////////////////////////////
/**////////////////////////////////////////////////////////////////////////////Wenn ich eine Nachricht schreibe, mit dem Inhalt : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sollte eigentlich die LÄnge angepasst werden, aber es kommt dan (( Marc1706: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Und am Ende fehlt das ))Wie kürze ich die Nachricht auf eine bestimmte Länge?
Das gleiche auch hier...
/**////////////////////////////////////////////////////////////////////////////
/**///////// AD DCMD CHAT START ///////////////////////////////////////////////
/**////////////////////////////////////////////////////////////////////////////
/**/dcmd_ad(playerid,params[])
/**/{
/**/ new string[128],name[MAX_PLAYERS],buchstaben[110];////hier länge vom text 128 max. zeichen
/**/ {
/**/ if(sscanf(params, "s",buchstaben)) return SendClientMessage(playerid, ROT, "OOC-Fehler: Verwendung: /o[Nachricht]");
/**/ {
/**/ if(adoff == 0)
/**/ {
/**/ GetPlayerName(playerid,name,sizeof name);
/**/ format(string,sizeof string,"[ Werbung: %s ] [ Sender: %s ]",buchstaben,name);
/**/ SendClientMessageToAll(GRÜN,string);
/**/ }
/**/ else if(adoff == 1)
/**/ {
/**/ GameTextForPlayer(playerid,"~y~Ad~w~-~b~Chat ~w~ist~n~~r~DEAKTIVIERT!",1500,3);
/**/ }
/**/ }
/**/ }
/**/ return 1;
/**/}
/**////////////////////////////////////////////////////////////////////////////
/**///////// AD DCMD CHAT ENDE ////////////////////////////////////////////////
/**////////////////////////////////////////////////////////////////////////////ich hoffe mir kann jemand helfen.
Danke!!!Mit freundlichen Grüßne,
Marc1706 -
habe alles durchsucht...
Die Coords gesucht und nach SetPlayerPosNoch ein Tipp??
-
Danke für die schnelle Antwort.
Funktioniert leider nicht...
Nächstes Problem:
NIRGENDS in meinem Script weder noch Filterscripts steht wo man Spawnt und
trozdem spawnt man da wo ich im letzten Pos sagte -
FoxHound - Wenn der Script alle 2 Sekunden schaut, ob die Minuten 0 sind, hängt doch der Server nach einer Weile oder?
Kann man machen, dass er ca. alle 50sec nachschaut, oder ist das egal?//Edit: Hat sich erledigt xD habe diese Stelle überlesen...
SetTimer("payday",2000,1); -
Liebe Community und lieber BFX,
ich habe mir heute das Dynamische Haus System zugelegt und in meinen
Server eingefügt.Nochmals vielen Dank für dieses Tolle Haussystem!
Folgende Probleme:
1. Ich möchte gerne die Roten Marker auf der Map ausmachen und
nur die grünen Sehen wenns frei ist. Wenn es belegt ist -> nichts anzeigen.
( Einfach eine Änderung im FS oder? )Würde mich sehr freuen!
MfG Marc1706
Skype: marc-1706 -
Liebe Community,
ich denke mal, jeder von den mittelguten Scripten könnte mir das beantworten,
aber leider kenne ich mich da noch nicht so gut aus...ich arbeite mit dem Dynamischen Haus System von BlackFoX_UD_ und möchte bei
OnPlayerSpawn gerne etwas umändern.Hier gehts zu dem Haussystem von BlackFox
Im Filterscript steht folgendes:
public OnPlayerSpawn(playerid)
{
for(new i = 0;i<_cache_haus;i++)
{
if(!strcmp(HausDaten[i][Besitzer],spielername(playerid)))
{
SetPlayerPos(playerid,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]);
break;
}
}
return 1;
}ich möchte jetzt, dass wenn dies nicht eintrifft, also wenn der
Spieler kein Haus hat, dass er hier gespawnt wird :
SetPlayerPos(playerid,1423.5933,-902.3813,56.7856);Wie pack ich das jetzt zusammen, sodass es funktioniert???
Danke!
MfG Marc1706 -
Hey liebe Community,
ich möchte auf meinem Reallifeserver, generell, dass wenn ein nicht Polizist (=Zivi/etc.) in ein Polizeiauto einsteigt,
dass er direkt rausgehauen wird, ABER NUR wenn er als Fahrer einsteigt. Ist das möglich und wenn ja,
wie mache ich so etwas?Habe mir das so ca. vorgestellt:
Wenn Spieler geht in Polizeiauto als Fahrer
{
Wenn Spieler ist Admin/Supporter oder ist Cop
{
Send Client Message.... z.B."Bitte nach nutzung zurücksetzten!"
}
Kicke Spieler aus Auto
Send Clien Message.... z.B."Du bist kein Polizist oder Supporter/Admin"
}xDDDDDDD
Hoffe mir kann jemand helfen.
Danke!MfG Marc1706
PS: Sorry das ich soviel frage, aber ich lerne ja momentan das Scripten noch...
EDIT1: Ist es auch möglich nur bestimmte Autos zu sperren??
Also wenn 3 Copcars stehen und nur bei einem davon wird man rausgekickt... -
Kannst du mir das mal irgendwie als Beispiel mit meinem Zeugs machen?
Ich weiß nicht was ich jetzt ändern muss. -
Danke dir ruppe.
Wielange Scriptest du schon?
Könntest du mich in Skype adden (marc-1706)? -
Hey liebe Community,
ich bin momentan dabei ein Befehl zu machen, um ein Tor zu bewegen.
Das erste Tor habe ich lspdgaragentor genannt und das zweite lspdtor.Dashier ist der Befehl von dem lspdtor...
/**/////////////////////////////////////////////////////////////////////////
/**///////// LSPDTOR ANFANG ////////////////////////////////////////////////
/**/if(isPlayerAnAdmin(playerid,2) || isPlayerAnCop(playerid,1))
/**/{
/**/ if(strcmp(cmdtext,"/lspdtor", true)==0)
/**/ {
/**/ MoveObject(lspdtor,1581.7557373047,-1628.4017333984,9,4.0);
/**/ SetTimer("lspdtortimer",6000,0);
/**/ SendClientMessage(playerid,GRÜN,"LSPD: Die LSPD-Einfahrt wurde geöffnet");
/**/ return 1;
/**/ }
/**/ SendClientMessage(playerid,ROT,"Du bist kein Polizist oder Supporter/Admin");
/**/ return 1;
/**/}
/**///////// LSPDTOR ENDE /////////////////////////////////////////////////
/**////////////////////////////////////////////////////////////////////////Der Befehl vom anderen Tor ist ja dann klar, also einfach bisschen geändert.
Hier ist der Timer, den ich mit meinem Befehl starte.
public lspdtortimer()
{
MoveObject(lspdtor,1581.7557373047,-1628.4017333984,14.057502746582,4.0);
SendClientMessage(playerid,ROT,"LSPD: Die LSPD-Einfahrt wurde automatisch geschlossen");
return 1;
}So nun kommt das Problem. Wenn ich Compilieren will kommt folgendes...
(1508) : error 017: undefined symbol "playerid"und dieser Fehler weißt auf die Zeile von meinem Timer hin:
SendClientMessage(playerid,ROT,"LSPD: Die LSPD-Einfahrt wurde automatisch geschlossen");Muss ich bei meinem Timer irgendwie playerid definieren?
Aber das muss man doch sonst auch nicht...Ich würde mich sehr freuen, wenn mir jemand helfen könnte.
Vielen Dank!Mit freundlichen Greetings,
Marc1706 -
Oh das mit 9 und 7 xDDD
Habe mich entweder verzählt oder meine Vorlage genommen.Danke dir ich werde es mal testen!