nach dem Ausloggen bleibt es trotzdem auf 0 in der Spieler datei.
Zeig mal wo & wie du es speicherst..
nach dem Ausloggen bleibt es trotzdem auf 0 in der Spieler datei.
Zeig mal wo & wie du es speicherst..
Zeig mal wo & wie du es speicherst..
Was genau meinst du mit wo? Ich speicher es mit DINI im Scriptfiles ordner,
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Level",Spieler[playerid][Level]);
dini_IntSet(Spielerdatei,"Tode",Spieler[playerid][Tode]);
dini_IntSet(Spielerdatei,"Morde",Spieler[playerid][Morde]);
dini_IntSet(Spielerdatei,"Schein",Spieler[playerid][Schein]);
@[GsL]Giulio: Du verwendest ein "enum" für den Spieler und gleichzeitig "PVars" ? ..
Entscheide dich für eins..
Falls du nicht PVars benutzen willst, muss der Schein so gegeben werden:
Spieler[playerid][Schein] = 1;
Falls du aber PVars benutzen willst, musst du es so speichern:
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Level",GetPVarInt(playerid,"Level"));
dini_IntSet(Spielerdatei,"Tode",GetPVarInt(playerid,"Tode"));
dini_IntSet(Spielerdatei,"Morde",GetPVarInt(playerid,"Morde"));
dini_IntSet(Spielerdatei,"Schein",GetPVarInt(playerid,"Schein"));
//Edit: Und wo soll ich die Objekte ertfernen lassen? ( damit das Game nicht crasht oder aufhängt )
1. Welche Objekte ?
2. Kannst du das nochmal genau erläutern was du machen möchtest. Die Daten in den files rausfiltern. SQLite ist auch eine Möglichkeit.
3. Ich meinte das nicht so
GetVehicleVelocity gibt die Bewegungsgeschwindigkeit in X-Richtung , Y-RIchtung und Z-Richtung an.
Wenn der Spieler den Berg runterfährt haben wir bei der Z-RIchtung einen negativen Wert. Damit kannst du detecten ob der Spielern den Berg runterfährt.
MapAndreas habe ich dir nur empfohlen um die Geschwindigkeit nicht so extrem zu erhöhen, falls das Fahrzeug schanzen sollte. Das ist jedoch deine Sache ob du das möchtest oder nicht, jedoch wird ja dein Fahrzeug gedrosselt daher sollte das nicht das Problem sein.
1. Welche Objekte ?
Generell Objekte, die ich erstellt habe..
2. Kannst du das nochmal genau erläutern was du machen möchtest. Die Daten in den files rausfiltern. SQLite ist auch eine Möglichkeit.
Ich möchte damit aus den Spielerdateien Informationen heraussuchen, damit das auch mit Offline-Spielern geht.. Möchte es gerne ohne SQLite oder MySQL machen..
Beispiel aus MySQL:
mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `User` WHERE `Name` = '%e' AND `Passwort` = '%e'",User[playerid][Username],inputtext);
Sowas ähnliches möchte ich damit machen.. Ist das möglich, und wenn ja, wie soll ich weiter vorgehen?
Zum 3. Punkt: Aber wieso klappt denn meine Funktion nicht?
Das mit der Geschwindigkeit usw ( das die zu hoch ist ), das werde ich dann später alles noch ändern..
1. Mir fehlt der Zusammenhang, klar wenn du Objekte löschen möchtest kannst du DestroyObject nutzen oder beim streamer Plugin DestroyDynamicObject oder
alle im umkreis des Spielers Streamer_DestroyAllVisibleItems(playerid, type, serverwide = 1) oder auf dme Server Streamer_DestroyAllItems(type, serverwide = 1).
Bei bestimmten Objekten brauchst du die Objectid, welche du temporär zwischenspeichern musst in einer variable jedoch glaub ich nicht das dich diese Antwort weiter gebracht hat.
2. Ja es ist schon möglich, du hast den richtigen Ansatz
stock Where(func[]){
new dir:dHandle = dir_open("./scriptfiles/Accounts/");
new item[40], type, datei[20], readstr[200],count;
while(dir_list(dHandle, item, type))
{
if(type == FM_FILE)
{
format(datei,20,"/Accounts/%s",item);
new File:file = f_open(datei);
while(f_read(file, readstr){
if(strfind(func,readstr,false) != -1) ++count;
}
}
}
dir_close(dHandle);
return count;
}
damit könntest du das ganze zählen lassen, falls du die Ergebnisse möchtest konntest du die in einem extra verzeichniss zwischenspeichern und nur die id zurückgeben
von dem file worüber man dieses nochmal extra auslesen muss, oder mann nutzt ein dynamisches Array.
3. Woher soll ich wissen ob der Code richtig ist, ich würde es generel nicht so machen aber nun gut, ich gebe dir nur lösungsvorschläge was du daraus machst ist deine Sache ^^-
Wie mache ich bei z.B. einem Tutorial eine "Wartezeit"?
So dass die Kamera halt 7 Sekunden z.B. die Stadthalle anguckt.
Ist bestimmt ganz simple, komme aber nicht drauf.
Das Tutorial:
stock Tutorial(playerid)
{
ClearChatForPlayer(playerid);
TFreeze(playerid);
SetTimerEx("TStadthalle",7500,false,"i",playerid);
SetTimerEx("TBank",7500,false,"i",playerid);
SetTimerEx("THospital",7500,false,"i",playerid);
SetTimerEx("TVinewood",7500,false,"i",playerid);
SetTimerEx("TAngelsteg",7500,false,"i",playerid);
ClearChatForPlayer(playerid);
SpawnPlayerEx(playerid);
return 1;
}
Eine Funktion davon:
forward TStadthalle(playerid);
public TStadthalle(playerid)
{
SetPlayerCameraPos(playerid, 1481.6932,-1639.0188,68.3361);
SetPlayerCameraLookAt(playerid, 1481.2965,-1772.2197,18.9270);
SendClientMessage(playerid,Gelb," ..::Stadthalle::.. ");
SendClientMessage(playerid,Weiß,"Dies ist die Stadthalle von **.");
SendClientMessage(playerid,Weiß,"Hier kannst du dir einen Personalausweiß beantragen und einen Job anzunehmen oder zu kündigen.");
SendClientMessage(playerid,Gelb," ..::::::::::::::.. ");
ClearLines(playerid,50);
return 1;
}
Auf Anfrage in PN:
Wenn ich dich richtig verstanden habe, dann meinst du es so?
stock Tutorial(playerid)
{
ClearChatForPlayer(playerid);
TFreeze(playerid);
TStadthalle(playerid);
SetTimerEx("TBank",7500,false,"i",playerid);
SetTimerEx("THospital",15000,false,"i",playerid);
SetTimerEx("TVinewood",22500,false,"i",playerid);
SetTimerEx("TAngelsteg",30000,false,"i",playerid);
ClearChatForPlayer(playerid);
SpawnPlayerEx(playerid);
return 1;
}
Alternativ könntest du auch bei jedem public den nächsten Timer für 7500ms starten, das bleibt dir überlassen.
Hm, klappt nicht. Bei mir switched es einfach durch ohne zu warten.
stock Tutorial(playerid)
{
ClearChatForPlayer(playerid);
TFreeze(playerid);
TStadthalle(playerid);
SetTimerEx("TBank",7500,false,"i",playerid);
SetTimerEx("THospital",15000,false,"i",playerid);
SetTimerEx("TVinewood",22500,false,"i",playerid);
SetTimerEx("TAngelsteg",30000,false,"i",playerid);
ClearChatForPlayer(playerid);
SpawnPlayerEx(playerid);
return 1;
}
forward TStadthalle(playerid);
public TStadthalle(playerid)
{
SetPlayerCameraPos(playerid, 1481.6932,-1639.0188,68.3361);
SetPlayerCameraLookAt(playerid, 1481.2965,-1772.2197,18.9270);
SendClientMessage(playerid,Gelb," ..::Stadthalle::.. ");
SendClientMessage(playerid,Weiß,"Dies ist die Stadthalle von **.");
SendClientMessage(playerid,Weiß,"Hier kannst du dir einen Personalausweiß beantragen und einen Job anzunehmen oder zu kündigen.");
SendClientMessage(playerid,Gelb," ..::::::::::::::.. ");
ClearLines(playerid,50);
return 1;
}
forward THospital(playerid);
public THospital(playerid)
{
SetPlayerCameraPos(playerid, 1223.9183,-1321.6509,26.4473);
SetPlayerCameraLookAt(playerid,1172.5776,-1323.3997,15.4187);
SendClientMessage(playerid,Gelb," ..::Krankenhaus::.. ");
SendClientMessage(playerid,Weiß,"Dies ist das Krankenhaus.");
SendClientMessage(playerid,Weiß,"Du kommst nur in das Krankenhaus wenn du einen tragischen Unfall hattest und dringend in die Notaufnahme musstest.");
SendClientMessage(playerid,Weiß,"Bist du im Krankenhaus angekommen musst du dich für 3Minuten ausruhen, danach kannst du wieder weiter spielen.");
SendClientMessage(playerid,Gelb," ..:::::::::::::::.. ");
ClearLines(playerid,50);
return 1;
}
Warum bekomme ich diese Errors ?
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 012: invalid function call, not a valid address
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : warning 215: expression has no effect
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 001: expected token: ";", but found ")"
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 029: invalid expression, assumed zero
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : fatal error 107: too many error messages on one line
Die Zeile von den Errors :
return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!", name(killerid)),Kicks(killerid);
name(killerid)),Kicks(killerid);
Zu
name(killerid),Kicks(killerid) );
Klammer falsch gesetzt.
Findet einer den Fehler?
public OnPlayerText(playerid, text[]) //Wenn der Spieler eine Nachricht sendet, wird dieser Public aufgerufen ;)
{
for(new i = 0; i < MAX_PLAYERS; i++){
if(IsPlayerConnected(i)) {
new Float:X, Float:Y, Float:Z, n[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, n, sizeof(n));
GetPlayerPos(playerid, X, Y, Z);
format(str, sizeof(str), "%s sagt: %s", n, text);
if(IsPlayerInRangeOfPoint(i, 20.0, X, Y, Z)) {
SendClientMessage(i, 0xFFFFFFFF, str);
}
}
}
return 0;
}
Es kommt nichts in den Chat, ich bekomme aber auch keine Error
Immer noch Errors :
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 012: invalid function call, not a valid address
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : warning 215: expression has no effect
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 001: expected token: ";", but found ")"
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : error 029: invalid expression, assumed zero
C:\Users\AhmedOso\Desktop\Aimen Sachen vom PC\Server\gamemodes\MOR.pwn(6286) : fatal error 107: too many error messages on one line
so schaut das alles aus :
if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
{
new vehicleid,vehiclemodel;
vehicleid = GetPlayerVehicleID(killerid);
vehiclemodel = GetVehicleModel(vehicleid);
if(IsPlayerInAnyVehicle(playerid)) { return true; }
if(vehiclemodel == 425) { return true; } // Hunter
if(vehiclemodel == 432) { return true; } // Rhino
if(vehiclemodel == 447) { return true; } // Seasparrow
if(vehiclemodel == 476) { return true; } // Rustler
if(vehiclemodel == 520) { return true; } // Hydra
return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!", name(killerid),Kicks(killerid));
}
#e
Hier hast du noch ein Fehler, du hast nur ein "%s" aber nutzt laut Komma zwei.
return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!", name(killerid),Kicks(killerid));//Kicks(killerid) währe falsch
Wie hast du denn diese zwei Funktionen definiert?
name(killerid)
Kicks(killerid)
Poste die mal.
[BlaZZeR]BirD: Das ist Käse was du da vor hast. So definierst du die Variablen zwei mal.
Einmal so :
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
und einmal :
stock Kicks(playerid)return SetTimerEx("Kicke",50,false,"i",playerid);
Ich gehe stark davon aus das es nicht an der Zeile liegt, denn nur dort bekomm ich den Error.
Schau hier mal (Das ist auch im Script) :
if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",NAME(playerid)),Kicks(playerid);
Bei der Zeile bekomm ich keine Errors.
Mfg Saphire
Alles anzeigenFindet einer den Fehler?
public OnPlayerText(playerid, text[]) //Wenn der Spieler eine Nachricht sendet, wird dieser Public aufgerufen ;)
{
for(new i = 0; i < MAX_PLAYERS; i++){
if(IsPlayerConnected(i)) {
new Float:X, Float:Y, Float:Z, n[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, n, sizeof(n));
GetPlayerPos(playerid, X, Y, Z);
format(str, sizeof(str), "%s sagt: %s", n, text);
if(IsPlayerInRangeOfPoint(i, 20.0, X, Y, Z)) {
SendClientMessage(i, 0xFFFFFFFF, str);
}
}
}
return 0;
}
Es kommt nichts in den Chat, ich bekomme aber auch keine Error
Problem besteht immer noch
//Edit:
Und wenn ich
GivePlayerMoney(playerid, 10000);
benutzen will, sagt er mir, dass es zu wenig / viele Argumente sind
Hm, klappt nicht. Bei mir switched es einfach durch ohne zu warten.
In diesem Fall, vielleicht hilft dir dieses Makro: [ MAKRO ] Sleep Funktion
Es kommt nichts in den Chat, ich bekomme aber auch keine Error
Schreib das mal so:
public OnPlayerText(playerid, text[])
{
new Float:p[3],n[MAX_PLAYER_NAME],str[144];
GetPlayerName(playerid, n, sizeof(n)),GetPlayerPos(playerid, p[0], p[1], p[2]);
format(str, sizeof(str), "%s sagt: %s", n, text);
for(new i; i < MAX_PLAYERS; i++){
if(!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 25.0, p[0], p[1], p[2])) continue;
SendClientMessage(i, 0xFFFFFFFF, str);
}
return 0;
}
mfg.
Jz bleibt nur noch meine Frage offen, wieso GivePlayerMoney() nicht funktioniert