Die neuen Includes von hier einfügen (die ganzen a_...).
http://files.sa-mp.com/samp03z_svr_R2-2_win32.zip
Beiträge von Jeffry
-
-
mysql_query("SELECT sum(spalte) FROM tabelle");
mysql_store_result();
new summe = mysql_fetch_int();So könnte ich mir das vorstellen, kann es nur grade nicht testen. Falls es nicht tut, werde ich es später für dich testen, gibst einfach eine Rückmeldung.
-
Du hast ja auch die falsche Zeile ersetzt.
mysql_query("SELECT COUNT(`ID`) FROM `enters`;");
mysql_store_result();
new jE = mysql_fetch_int();
mysql_free_result();
for(new d = 0; d != jE+1; d++) {
//zeug
}mysql_query("SELECT COUNT(`id`) FROM `dutypoints`;");
mysql_store_result();
new jD = mysql_fetch_int();
mysql_free_result();
for(new d = 0; d != jD+1; d++) {
//zeug
} -
Function Stats(playerid,targetid)
{
if(Spieler[playerid][Ausweis] == 1)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
new string[1500];
format(string, sizeof string, "{0000FF}[Stats von %s auf [GOR] German Oldschool Reallife{FFFFFF}\n", Spieler[playerid][Name]);
format(string, sizeof string, "%s{0000FF}[Allgemeines]{FFFFFF}\n",string);
format(string, sizeof string, "%sLevel: %s Respektpunkte: %s Skin ID: %i\n",string, Spieler[playerid][Level],Spieler[playerid][Respektpunkte],GetPlayerSkin(playerid));
format(string, sizeof string, "%sTode: %s Morde: %s",string,Spieler[playerid][Tode],Spieler[playerid][Kills]);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Deine Statistik",string,"OK","");
}
else
{
SendClientMessage(playerid,COLOR_RED, "Du bestizt keinen Personalausweis!");
}
}string kann in sich selbst geschrieben werden. Daher wird der Rest übernommen. Das %s am Anfang jedes Format steht für den ersten Parameter, der "string" ist.
format(string, sizeof(string), "123");
format(string, sizeof(string), "%s456", string);
//Ergibt in string: 123456 -
Wenn du die Variable nirgends setzt, wovon ich ausgehe, dann kannst du sie auch nicht verwenden.
Ändere
Spieler[playerid][Geld]zu:
GetPlayerMoney(playerid)Bsp:
if(GetPlayerMoney(playerid) > 5000) -
http://wiki.sa-mp.com/wiki/PlayAudioStreamForPlayer
Tutorial: http://forum.sa-mp.com/showthread.php?t=332729
Ja, das geht mit dem richtigen Coding auch für Sirenen, die muss man dann eben mit einem anderen KEY starten.
-
Auf Anfrage in PM:
ocmd:ferstellen(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
new Float:x,Float:y,Float:z;
new fraktname[35],waffe,muni;
if(sscanf(params,"s[120]ii",fraktname,waffe,muni))return SendClientMessage(playerid, COLOR_GRAU," Verwendung: /ferstellen [fraktions-name] [waffenID] [munition]");
{
if(waffe <0||waffe >46)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Waffe zwischen 0-46 wählen!");
if(muni <0||muni >500)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Munition zwischen 0-500 wählen!");
GetPlayerPos(playerid,x,y,z);
CreateFraktion(fraktname,x,y,z,waffe,muni);
print(fraktname);
}
}
else
{
SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
}
return 1;
}ocmd:fdelete(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
for(new i=0; i<MAX_FRAKT; i++)
{
if(IsPlayerInRangeOfPoint(playerid,2.5,fInfo[i][f_x],fInfo[i][f_y],fInfo[i][f_z]))
{
new datei[264];
format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",i);
if(dini_Exists(datei))
{
dini_Remove(datei);
KillFraktion(i);
printf("Fraktion %d wurde gelöscht.",i);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_ROT," FEHLER: Du bist nicht in der nähe einer Fraktion!");
}
}
}
else
{
SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
}
return 1;
}Die Schleife beim Erstellen-Befehl ist da falsch, da du sie ja schon bei "CreateFraktion" hast, sonst hast du zwei, was folglich 25 Fraktionen erstellt.
Beim Löschen hat ein return 1; gefehlt. -
Danke, jetzt ist mir das auch klar warum das passiert.
Du selektierst die ANZAHL der Zeilen (nicht die Zeilen!), da bekommst du ja logischerweise nur eine Zahl zurück, das heißt genau eine Zeile.Ändere
new jE = mysql_num_rows();zu:
new jE = mysql_fetch_int();Das Selbe für "jD" versteht sich.
Dann sollte es eigentlich funktionieren.
Wenn nicht, poste noch mal den Log. -
Dann schalte mal den MySQL Debug Modus an und poste dann hier was im Server_log steht.
Außerdem kannst du mal versuchenbdas Semikolon am Ende des queries weg zu machen, vielleicht hilft das was. Bei einem query ist es unüblich ein Semikolon zu setzen. -
Das passt so. Ansonsten Code posten, dann willst du nämlich was anderes machen als du hier beschrieben hast.
-
Includes haben mit diesem Fehler nichts zu tun, da diese nicht beim Start des Servers noch zur Laufzeit aufgerufen werden, sondern nur die amx Datei und die enthält die Includes. Wären sie nicht vorhanden, hätte der Compiler gejammert.
https://www.gta-servers.de/samp-faq#Aktualisiere deine Plugins.
-
Könnte daran liegen, dass dies eine .wav Datei ist. Versuch es mal als .mp3 Datei.
Außerdem ist wwww (4x) ganz sicher nicht richtig. -
Ich schätze mal du hast unbewusst was weggemacht, oder es läuft ein Timer der das speichert, der aber nur alle 5 Minuten aufgerufen wird und du bist einfach nur zu schnell im Server-Neu-Starten.
Da musst du halt mal schauen wo was fehlt, oder ob das mit dem Timer der Fall ist. -
if(!strcmp(cmdtext,"/rc"),true)==10){
zu:
if(!strcmp(cmdtext,"/rc",true)){ -
-
Kannst du das mal gescheit posten? So erkennt kein Mensch was.
-
Wenn du die Variable änderst, heißt das nicht, dass automatisch die Werte in deiner .cfg geändert werden! Du musst nach dem /fpark sowas wie "SpeichereAuto(autoID)" aufrufen, wo das Auto gespeichert (=in die .cfg geschrieben) wird.
Und ja, es liegt an dem Respawn Befehl.if(strcmp(cmd, "/respawncars", true) == 0 || strcmp(cmd, "/rc", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 4)
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Supporter/Administrator.");
return 1;
}
new bool:unwanted[CAR_AMOUNT];
for(new player=0; player<MAX_PLAYERS; player++)
{
if(IsPlayerInAnyVehicle(player))
{
unwanted[GetPlayerVehicleID(player)]=true;
}
}
for(new car = 0; car <= CAR_AMOUNT; car++)
{
if(!unwanted[car])
{
SetVehicleToRespawn(car); //Alternativ kannst du das auch mal entfernen, falls die Autos am Spawn stehen und nicht an der gespeicherten Pos.
new id;
for(new i=0; i<sizeof(FractionCars); i++)
{
if(car == FactionCars[i][fCarid])
{
id = i;
break;
}
}
SetVehiclePos(car,FactionCars[id][fPos][0],FactionCars[id][fPos][1],FactionCars[id][fPos][2]);
SetVehicleZAngle(car,FactionCars[id][fPos][3]);
}
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Alle unbesetzen Fahrzeuge wurden von %s respawnt.", sendername);
BroadCast(COLOR_WHITE,string);
}
return 1;
} -
if(!unwanted[car]) SetVehicleToRespawn(car);
^ Das setzt das Auto an den Spawn-Ort zurück, nicht an den gespeicherten Ort.Du musst danach SetVehiclePos benutzen, zu der Position die du gespeichert hast.
-
Kommt die Nachricht, dass du das Fahrzeug geparkt hast?
-
Da ich die Frage danach schon einige Male gesehen habe:
stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
{
if(IsPlayerConnected(playerid))
{
new Float:a;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);
x += (dist * floatsin(-a, degrees));
y += (dist * floatcos(-a, degrees));
return true;
}
return false;
}Benutzung:
Spoiler anzeigen
//Setzt den Spieler 5 Meter vor den anderen Spieler.
new Float:x, Float:y, Float:z;
GetPosVorSpieler(pID, 5.0, x, y, z); //pID = Spieler, dessen Position abgefragt wird.
SetPlayerPos(playerid, x, y, z); //playerid = Spieler, dessen Position gesetzt wird.
Keywords: GetPosVorSpieler, GetPosInfrontOfPlayer, GetXYZVorSpieler, GetXYZInfrontOfPlayer, GetXYVorSpieler, GetXYInfrontOfPlayer, SpielerPosVorSpieler, SetSpielerVorSpieler.