hmm frag mal rockstar. das ist alles von rockstar programiert, das die ampeln umschalten, wann sie umschalten, das sie alle bei einem cheat auf grün geschaltet werden.
dazu giebt es aber keine funktion wie
SetAmpeltForPlayer(playerid,Green);
hmm frag mal rockstar. das ist alles von rockstar programiert, das die ampeln umschalten, wann sie umschalten, das sie alle bei einem cheat auf grün geschaltet werden.
dazu giebt es aber keine funktion wie
SetAmpeltForPlayer(playerid,Green);
Guten Tag.
Ich habe ein Banksystem. nun soll man anderen Spielern etwas überweisen können.
dazu soll überprüft werden ob er folgendes Eingegeben hat: "Id Betrag".
dazu benutzte ich die Funktion "split". die nach einem bestimmten zeichen etwas einteilt. der erste teil ist die id, der 2. teil der betrag.
nun wollte ich abfragen ob er beides geschrieben hat.
hier mein scriptausschnitt:
public OnDIalogResponse(...)
{
if(dialogid == DIALOG_ÜBERWEISEN)
{
if(response)
{
new WeisInfo[2][50];
split(inputtext, WeisInfo, ' ');
if (strval(inputtext) > 13 || strval(inputtext) < 5)
{
SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
new str[256], CHand, DHand, DBank;
DHand = GetPlayerMoney(playerid)/100;
CHand = GetPlayerMoney(playerid)%100;
DBank = Spieler[playerid][Bank]/100;
format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
}
else
{
if()//hier soll die abfrage hin, ob er "ID Betrag" eingegeben hat.
{
SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
new str[256], CHand, DHand, DBank;
DHand = GetPlayerMoney(playerid)/100;
CHand = GetPlayerMoney(playerid)%100;
DBank = Spieler[playerid][Bank]/100;
format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
}
else
{
if(!IsPlayerConnected(strval(WeisInfo[0])))
{
SendClientMessage(playerid,0xFF000FF,"Ungültige Id!");
new str[256], CHand, DHand, DBank;
DHand = GetPlayerMoney(playerid)/100;
CHand = GetPlayerMoney(playerid)%100;
DBank = Spieler[playerid][Bank]/100;
format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
}
else if(Spieler[playerid][Bank] < strval(WeisInfo[1]))
{
SendClientMessage(playerid,0xFF000FF,"Du hast nicht soviel Geld auf der Bank!");
new str[256], CHand, DHand, DBank;
DHand = GetPlayerMoney(playerid)/100;
CHand = GetPlayerMoney(playerid)%100;
DBank = Spieler[playerid][Bank]/100;
format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
}
else
{
new strtest[256],name[MAX_PLAYER_NAME];
GetPlayerName(strval(WeisInfo[0]), name, sizeof(name));
format(strtest,256,"[TEST] Du wolltest $%d an %s (%d) überweisen!", strval(WeisInfo[1]), name, strval(WeisInfo[0]));
SendClientMessage(playerid,0x00EE00FF,strtest);
}
}
}
}
else
{
if(GetPlayerVirtualWorld(playerid) == 1)
{
ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
}
if(GetPlayerVirtualWorld(playerid) == 2)
{
ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"San Fierro Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
}
if(GetPlayerVirtualWorld(playerid) == 3)
{
ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Las Venturas Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
}
}
}
return 1;
}
Wäre sehr nett wenn mir da eine rhelfen könnte.
mfg
Simon
achsoo okay werde es morgen mal testen.
danke
habs mit float probiert und da ist das passiert was ich vermutet habe.
50000 = 500.00(000000000000)
50050 = 500.00(000000000000)
DIe nullen in den klammern sind auch da, die man aber wegmachen kann..
ich weiß was du mit modulo meinst:
22/7 = 3 rest 1
aber wie wende ich das bei pawno an? habe noch nie zuvor davon gehört.
ich habe das antimoneycheat von Fox, welches überprüft ob die Funktionen GetPlayerMoney/SetPlayerMoney/ect. benutzt wird.
klappt eig ganz gut. also ich verstehe nicht ganz wie du das meinst mit Modulo
also ich weiß das bei dieser funktion bei zum beispiel 22/7 3,1 rauskommt aber wie verwendet man die funktion?
Guten Tag
Bei beimen Geld system giebt es Cent beträge, das heißt SetPlayerMoney(playerid,500); wären bei mir $5,00. SetPlayerMoney(playerid,555); wären dann $5,55.
nun habe ich ein banksystem was das aktulle gutenhaben auf der bank und das geld auf der hand anzeigt. nun könnte man ganz einfach mit GetPlayerMoney das geld abfragen und mit einem string wiedergeben, was auch klappen würde wenn ich nicht das "Cent-System" eingebaut hätte. das heißt wenn ich $5,55 habe würde dort stehen: "$555.
Nun kann ich es trotzdem hinbekommen, wenn ich ein bisschen rechne. den ersten teil bekomme ich hin, der ist auch sehr einfach. doch ich weiß nicht wie ich den 2. teil errechnen muss:
$TEIL1,TEIL2
bsp.: ich habe 500000$, in meinen system wären es 5000,00. nun ist die zahl vor dem kommer der 1. teil der sich mit GetPlayerMoney(playerid)/100 errechnen lässt. nur wie rechne ich nun den 2. teil also die 2 ziffern hinter den komma aus? ich habe es selber shcon versucht jedoch hat es nicht geklappt.
ich glaube man kann es einfacher mit floats machen, weiß aber nicht genau wie ichs da machen muss und obs klappt.
vllt weiß ja einer wie ich den 2. teil ausrechne, also die letzten beiden stellen im Betrag. Oder wie man es einfacher machen könnte.
ich bedanke mich schon einmal für eure hilfe.
mfg
Simon
oder so okay.. danke schön hat mir sehr geholfen
//edit:
Ich wollte nun die Fraktionsdateien erstellen bzw. sie auslesen. doch die dateien wurden weder erstellt, noch wurde sie, nachdem ich sie selber erstellt habe richtig ausgelesen:
new Fraktiondatei[256];
new FrakName[MAX_FRAKS][20];
format(Fraktiondatei,256,"/Fraktion/%s.ini",FrakName);
for(new i = 0;i<MAX_FRAKS;i++)
{
if(!dini_Exists(Fraktiondatei))
{
Fraktion[i][Kasse] = 2000000;
dini_Create(Fraktiondatei);
dini_IntSet(Fraktiondatei,"Kasse",Fraktion[i][Kasse]);
}
else
{
Fraktion[i][Kasse] = dini_Int(Fraktiondatei,"Kasse");
}
}
//edit: ich habe mich verguckt, es wird eine .ini datei erstellt mit dem wert 2000000 aber diese datei hat keinen namen.
Guten Tag
Ich habe bisher nur Spieler informationen in einer .ini (mit Dini) abgespeichert. nun wollte ich das selbe mit meinen Fraktionen machen.
ich hätte da die frage wie ich das machen muss, ich habe das bisher so und weiß nicht ob es so richtig ist:
const MAX_FRAKS = 10;
new Fraks[MAX_FRAKS][20] = {
"Zivilisten",
"Grove Street Family",
"Ballas",
"Aztecas",
"La Cosa Nostra",
"Yakuza",
"Hells Angels",
"Hitmen",
"Fahrschule",
"Medics"
};
enum Finfo
{
Kasse
}
new Fraktion[MAX_FRAKS][Finfo];
würde es so gehen die einzelnen Information wie die Kasse in einer .ini abzuspeichern oder muss ich das anders machen?
wie müssten nun die abfragen aussehen? also bei den Spielern war es: Spieler[playerid][NAME]
wie soll es nun bei fraktion aussehen? Fraktion[???][NAME]
es wäre sehr nett wenn mir da jemand helfen könnte.
mfg
Simon
ich habe oben im script new gskasse.
dann fragste ab ob etwas in der datei steht wenn nichts steht wird der aktuelle wert von gskasse reingeschreiben und DANN setzt du gskasse uaf 2000000, das muss anders herum aber ich werde es mal eben probieren
//edit: habs nun so:
new Inhalt[10], File:Grovekasse = fopen("frakkasse.txt",io_readwrite);
fread(Grovekasse,Inhalt);
if(!Inhalt[0])
{
gskasse = 2000000; // oder was auch immer dein startwert ist
new string[15];
format(string,15,"%d",gskasse);
fwrite(Grovekasse,string); // string muss gleich dem startwert sein
}
else
{
gskasse = strval(Inhalt);
}
fclose(Grovekasse);
und sobald ich server starte und datei net vorhanden wird sie gemacht und es steht 2000000 wie gewollt in der datei.
änder ich nun den wert auf 1500000 und starte gm neu, ändert sich die zahl nicht wie gewohlt.
klappt also nun habe ich da noch ne frage, nun steht da stumpf die zahl in der datei, die ich iwan wieder auslesen will. kann man mehreres nun in dieser datei schreiben? oder kann man das wie bei dini so gestalten:
Kasse=2000000
Drogen= 100
Mats= 100
und sobald man dann ausließt soll man die einzelnen sachen wie kasse, drogen und mats auslesen können.
bisher sieht es so in der datei aus:
2000000
ich möchte den wert von der gskasse als integer also als ganze zahl in einer datei abspeichern und sie beim gamemode start auslesen.
wenn er beim gamemode start nichts ausliest, soll der aktuelle wert von gskasse (wäre dann 2000000) hineingeschrieben werden.
ich habs bisher so:
new File:Grovekasse = fopen("frakkasse.txt",io_readwrite);
fread(Grovekasse,Inhalt);
if(strcmp(Inhalt, "", true) == 0)
{
new string[15];
format(string,15,"%d",gskasse);
fwrite(Grovekasse,string);
}
gskasse = strval(Inhalt);
fclose(Grovekasse);
wäre das denn nun richtig so oder ist da irgentwas falsch dran?
hm ja keine ahnung tut mir leid.
ja und wenn man nun überlegt macht man beides zusammen:
if(newkeys & 126 || newkeys & -126 || newkeys & KEY_UP || newkeys & KEY_DOWN || newkeys & KEY_LEFT || newkeys & KEY_RIGHT || HOLDING(126) || HOLDING(-126) || HOLDING(KEY_UP) || HOLDING(KEY_DOWN) || HOLDING(KEY_lEFT) || HOLDRING(KEY_RIGHT))
hmm jetzt klappt es hatte es schoneinmal da ging es nicht.
naya nun geht es. dankeschön
anstatt spawn(playerid)
SpawnPlayer(playerid);
ja weil es nicht die taste ist..
versuch mal das hier:
if(newskey == 126 || newkeys == -126 || HOLDING(126) || HOLDING(-126))
Guten Tag.
Ich kenne das von einigen servern, das die skinauswahl übersprungen wird. bei mir wird sie nicht übersprungen, man muss auf spawn klicken und dann gehts erst weiter. weiß jemand wie man das überspringen kann? ich habe mir mal das system von LOH angeschaut von dem ich weiß das da die spawnauswahl zu anfang übersprungen wird, bin jedoch nicht schlau draus geworden.
dann bleibt dir wohl nur noch die variante mit dem freezen über. oder irgenteiner kennt da ein gutes system wie mans noch machen könnte, ich wüsste jetzt so auf die schnelle nicht was man machen könnte..