Dann muss der Server halt die komplette Schleife durchgehen, auch wenn nur einer connected ist.
Warum hast du die Abfragen denn raus genommen?
Sagt mir "error 017: undefined symbol "IsPlayerConnnected" obwohl es doch eigentlich definiert ist.
Dann muss der Server halt die komplette Schleife durchgehen, auch wenn nur einer connected ist.
Warum hast du die Abfragen denn raus genommen?
Sagt mir "error 017: undefined symbol "IsPlayerConnnected" obwohl es doch eigentlich definiert ist.
IsPlayerConnnected
Da hat Jeffry sich wohl aus Versehen verschrieben^^
Da ist einfach nur ein n in Connected zu viel ![]()
Einfach das crashdetect Plugin (so bzw. dll) in den plugins Ordner legen und in der server.cfg eintragen, bei plugins.
wie gesagt dann steht in der konsole nur dass das plugin nicht geladen wurde
wie gesagt dann steht in der konsole nur dass das plugin nicht geladen wurde
Stell sicher das dass Plugin in der server.cfg eingetragen ist, und wichtig ist, falls du ein Linuxserver besitzt muss die Endung am Ende vorhanden sein, sprich crashdetect.so etc..
Stell sicher das dass Plugin in der server.cfg eingetragen ist, und wichtig ist, falls du ein Linuxserver besitzt muss die Endung am Ende vorhanden sein, sprich crashdetect.so etc..
plugins mysql sscanf crashdetect
das steht bei mir in der cfg in der letzten zeile
Leere den Server Log und starte dann den Server erneut, dann poste was im Server Log steht.
Bitte in einem neuen Thread.
Die Steuern und der Umsatz von meinem public Payday werden nicht korrekt ausgerechnet.
Ich habe bisschen experimentiert aber leider ohne Erfolg.
@Jeffry kannst du mir bitte helfen.
new Steuern = 11;
Die Variable Lohn setze ich provisorisch unter OnPlayerConnect so
Lohn[playerid] = 2391;
forward Payday();
public Payday()
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) && PlayerInfo[i][p_LoggedIn] != true)continue;
PlayerInfo[i][p_PayTime] ++;
if(PlayerInfo[i][p_PayTime] >= 60)
{
PlayerInfo[i][p_PayTime] = 0;
PlayerInfo[i][p_EXP] += 100;
new oldBank, endLohn;
oldBank = PlayerInfo[i][p_Bankkonto];
endLohn = Lohn[i] -((Lohn[i]*Steuern)/100);
new Umsatz = endLohn -oldBank;
new tmpSteuer = Umsatz -endLohn;
PlayerInfo[i][p_Bankkonto] += endLohn;
new str[145];
SendClientMessage(i, 0x109448FF, "[BANKINFORMATION] Neue Kontoein- & auszüge.");
format(str, sizeof(str), " Alter Kontostand: {FFFFFF}$%s", ConvertMoney(oldBank));
SendClientMessage(i, 0x109448FF, str);
format(str, sizeof(str), " Neuer Kontostand: {FFFFFF}$%s {109448}( {FFFFFF}Umsatz: $%s {109448})", ConvertMoney(PlayerInfo[i][p_Bankkonto]), ConvertMoney(Umsatz));
SendClientMessage(i, 0x109448FF, str);
format(str, sizeof(str), " Zusätzlich wurden dir {FFFFFF}$%s {109448}( {FFFFFF}%d Prozent {109448}) Steuern entzogen.", ConvertMoney(tmpSteuer), Steuern);
SendClientMessage(i, 0x109448FF, str);
SendClientMessage(i, 0x18DC89FF, " [EXP] {FFFFFF}Du hast {18DC89}100 EXP {FFFFFF}erhalten, Grund: Payday.");
SetPlayerChatBubble(i, "100 EXP erhalten", 0x18DC89FF, 70, 3000);
}
}
}
Alles anzeigen
Der Umsatz ist doch der Lohn, oder?
Also:
new Umsatz = endLohn -oldBank;
zu:
new Umsatz = Lohn[i];
Wenn nicht das, dann poste bitte was ausgegeben wird.
Logisch
. Jetzt funktioniert es auch mit den Steuern natürlich. Danke!
Wieso wird mir bei GetPlayerWeaponData weiterhin angezeigt ich hätte eine Waffe, obwohl ich sie leergeschossen habe? q.q
Die Funktion funktioniert nicht immer korrekt, ich habe schon vor einigen Jahren Fehler in der Funktion gemeldet, allerdings hat sich Kye nie darum gekümmert.
Was zeigt es dir denn bei der Ammo an, wenn du die ausgeben lässt? Wenn 0 drin steht, dann kannst du es so überspringen.
Wo ist eigentlich der Unterschied zwischen mysql_pquery und mysql_tquery ?
http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_pquery
mysql_pquery nutzt Multi Threading, daher ist es schneller.
Ich bekomme den Mysql Fehler:
[11:57:31] [DEBUG] mysql_pquery - connection: 1, query: "SELECT * WHERE numplate = 'Simon'", callback: "OnNumplateCheck", format: "ds"
[11:57:31] [DEBUG] CMySQLQuery::Execute[OnNumplateCheck] - starting query execution
[11:57:31] [ERROR] CMySQLQuery::Execute[OnNumplateCheck] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE numplate = 'Simon'' at line 1
[11:57:31] [DEBUG] CMySQLQuery::Execute[OnNumplateCheck] - error will be triggered in OnQueryError
Bei dem Code:
mysql_format(db_handle,query,sizeof(query),"SELECT * WHERE numplate = '%s'",inputtext);
mysql_pquery(db_handle,query,"OnNumplateCheck","ds",playerid,inputtext);
forward OnNumplateCheck(playerid,inputtext[]);
public OnNumplateCheck(playerid,inputtext[])
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,db_handle);
if(num_rows == 0)
{
new query[250], t = autoanmeldung[playerid];
mysql_format(db_handle, query, sizeof(query),"UPDATE usercars SET numplate = '%s' anmeldung = 1 WHERE besitzer = '%s'",inputtext,GPlayerName(playerid));
mysql_pquery(db_handle, query);
format(pCar[playerid][t][numplate],30,"%s",inputtext);
SCM(playerid,iblau,"[INFO]:{FFFFFF} Du hast dein Auto nun mit dem Kennzeichen %s angemeldet",inputtext);
pCar[playerid][t][anmeldung] = 1;
}
if(num_rows == 1)
{
ShowPlayerDialog(playerid,D_AUTOANMELDUNG2,DIALOG_STYLE_INPUT,"Kennzeichen","Das Kennzeichen gibt es bereits!","Annehmen","Abbrechen");
return 1;
}
return 1;
}
Alles anzeigen
Aber die Synthax des Befehles sollte doch passen?
Yo, hab ne kleine Frage.
Habe folgenden Befehl:
CMD:orem(playerid,params[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(IsPlayerInRangeOfPoint(i, 5, 1869.0564,-2499.7913,5048.4761))
{
SetPlayerPos(i, 1857.0629,-2477.5789,5048.4761);
SendClientMessage(playerid,RED,"Wrong answer!");
}
}
return 1;
}
Alles anzeigen
Mein Problem ist, wenn ich jemanden aus der Zone entferne, bekomme ich 2 mal die Nachicht, aber er keine.. Ich möchte das aber so haben das ALLE die Nachicht erhalten die entfernt werden.
playerid => i und fertig ![]()
CAlles anzeigenocmd:create(playerid, params[]) { new str[32]; if(sscanf(params, "s[32]", str))return SendClientMessage(playerid, COLOR_GREY, "Benutze: /create [ Pickup]"); if(strcmp(str, "Pickup", true) == 0) { new weaponid, ammo; if(sscanf(params,"{s[32]}ii",weaponid, ammo))return SendClientMessage(playerid, COLOR_GREY,"Benutze: /create pickup [WaffenID / ID] [Ammo / Wert]"); SendClientMessage(playerid,COLOR_GREY,"Klappt"); } return 1; }Funktioniert nicht.
Was mache ich falsch?
Mache es einfach so:
CAlles anzeigen//Das Makro für isnull #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1])))) ocmd:create(playerid, params[]) { if(isnull(params)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /create [ Pickup]"); if(!strcmp(params,"Pickup",true)) { //Hier hat er Pickup eingegeben } return 1; }
Funktioniert nicht.
Ich will es halt so machen, dass ich /create eingebe, dann stehen mir auswahlmöglichkeiten zur verfügung (Haus, Pickup, etc.)
Wenn ich dann Pickup eingegeben hab, sollte eine neue Message kommen, für die entsprechenden Parameter