Nutze die static Version die in dem Ordner ist. Benenne sie um, oder ändere den Eintrag in der server.cfg.
Die static Version hat diese Library bereits eingebaut.
Nutze die static Version die in dem Ordner ist. Benenne sie um, oder ändere den Eintrag in der server.cfg.
Die static Version hat diese Library bereits eingebaut.
PC schonmal neu gestartet?
Lösche die amx Datei mal, dann starte die pawno.exe neu und versuche dann den Code zu kompilieren.
Falls das nicht klappt, kannst du dir den SAMP Server neu herunterladen, und dann fügst du deine Codes, Plugins und scriptfiles dort ein.
Aktualisiere dein MySQL Plugin:
https://github.com/pBlueG/SA-MP-MySQL/releases
R39-2 ist die neuste Version.
Entweder so, oder du definierst es als Funktion, die du dann aufrufst. Das macht die Sache übersichtlicher und du kannst es besser auseinander halten, was zu was gehört.
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
OnPlayerTakeDamage_HS(playerid, issuerid, amount, weaponid, bodypart);
return 1;
}
stock OnPlayerTakeDamage_HS(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9)
{
SetPlayerHealth(playerid, 0.0);
}
return 1;
}
Willkommen im der Scripting Base!
Wenn du im Spiel bist, wird der Gamemode auch dort neu geladen, sprich siehst du die Küste von Los Santos und bist danach wieder in der Class-Selection, oder nicht?
Wenn ja: Suche in deinem Code (auch im Filterscript) mal nach "gmx", ob das irgendwo steht.
Wenn nein: Dann suche, ob über irgendeinen Timer das Callback "OnGameModeInit" immer wieder aufgerufen wird. Zur Not könnte man das auch abbrechen lassen, falls das der Fall sein sollte, aber du nichts findest.
Sehr schön. ![]()
Mich würden Speedtests auch mal interessieren.
Werde ich machen sobald ich Zeit habe. Ich hoffe, dass es mir am Wochenende reicht.
Ich kann aber auch so sagen, dass es keine Probleme verursacht, solange man es nicht jede Millisekunde aufruft.
Wenn ichs mir recht überlege, könnte man das Tutorial doch zu einer Include bringen. Ich kann mir vorstellen, dass das sehr viel mehr genutzt werden würde, als sich jemand das Tutorial hier durchliest und es auf eigene Faust versucht.
Ich merke mir das mal vor. Vielleicht mache ich das über Weihnachten, da findet sich meistens etwas Zeit.
EDIT:
Hier der Speedtest @Paradoxon: Manyula:.
Zitat[18/10/2014 19:31:37] Zeit: 1076 ms
Das bedeutet, dass es 0,1 Millisekunden (!) dauert, wenn man 10 Items hinzufügt und danach gleich wieder 10 Items entfernt, was eigentlich sowieso keiner macht. Damit kann man entsprechend sagen, dass 1 Item hinzufügen/entfernen 0,005 Millisekunden, also 5 Mikrosekunden dauert.
=> Es ist also zu 100% Lag-Frei und wird keinerlei Fehler verursachen, auch nicht, wenn 200 Spieler den Dialog offen haben, da die Dialoge ja nur per ShowPlayerDialog nach dem aktualisieren angezeigt werden, das hat also keine nennenswerte Auswirkung auf die Laufzeit. Und selbst wenn es die Laufzeit verhundertfachen würde (was völlig absurd ist) würde 1 Item hinzufügen/aktualisieren nur 0,5 Millisekunden dauern, was ebenso keine Lags verursacht, selbst wenn man es 10 mal in der Sekunde macht.
Fazit: Das System ist selbst bei übermäßig extremen Gebrauch absolut Lag-Frei.
Erstellst du alle Objekte mit CreateDynamicObject, oder sind da welche dabei die du mit CreateObject erstellst?
Die die hier drin sind:
http://files.sa-mp.com/samp03z_svr_R4_win32.zip
Naja, ich sag es mal so: Der Code ist ein Chaos, und funktionieren tut er auch nicht, wie [LnD]Sulfarius schon sagte. Einen ganzen Gamemode kann dir hier keiner reparieren.
Du musst nun so vorgehen:
1.) Solange den MySQL Log checken, bis da keine Fehler mehr angezeigt werden. Am besten du stellst das Loglevel auf Errors und Warnungen um:
mysql_log(LOG_ERROR | LOG_WARNING);
2.) Wenn dort keine Fehler mehr kommen, aber du noch immer Fehlerhaft gespawnt wirst, musst du den Verlauf des Codes verfolgen und schauen wann du wie gespawnt wirst, den Teil prüfen und ggf. entfernen oder ausbessern.
ODER: (Meine Empfehlung)
Mach dir einen eigenen Code, es soll ja später auch dein Server sein.
Zitat[14:47:57] [WARNING] CMySQLResult::GetRowDataByName - field not found ("GSKILLS")
[14:51:47] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1146) Table 'ni42523_2_DB.mRD_races' doesn't exist
Hier hast du wieder Fehler.
Falls es noch immer nicht funktioniert, poste die "CreateAccount" Funktion.
Ok, das liegt zum einen daran, dass du es rundest und zum anderen daran, dass du den Timer zu wenig oft aufrufst.
Ändere
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
zu:
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 10.0;
Und ändere SetTimer von "CheckGas" von 10000 zu 1000.
Das sieht doch gut aus, bis auf die Aufrufszeiten. Lass den Timer jede Sekunde aufrufen. Jetzt solltest du dich nur noch vom Fleck bewegen. Fahr mal ein paar Runden um den Block.
Siehst du diese Nachricht im Chat noch?
format(string,sizeof(string),"Und du bist also %i Jahre alt.",AgeOfPlayer(playerid));
Wenn ja, poste nochmal den MySQL Log wenn du das Datum eingegeben hast.
Der Code der unter OnDialogResponse steht wenn du dein Passwort eingegeben hast.
Einmal den Code vom Registrationsdialog und einmal den Code vom Logindialog.
Bitte poste den dazugehörigen Code.
Ok, dann fehlt aber in deinem mysql_log etwas.
Du musst das mysql_debug vor Connect_To_Database() schreiben:
mysql_debug(1);
Connect_To_Database();
Ändere das und poste dann nochmal was im Log steht.
Zitat[14:36:10] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1146) Table 'ni42523_2_DB.mRD_account_main' doesn't exist
Die Tabelle in der Datenbank existiert gar nicht.
In dem Log steht nichts von "Connect". Wo im Code stellst du den die Verbindung zur Datenbank her? Das scheint ganz und gar zu fehlen, bzw. nicht aufgerufen zu werden.
Sieht ganz danach aus, dass MySQL das Problem verursacht.
Schalte bitte den MySQL Debug Modus ein und poste was im Log steht. Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)
Ok, was ist jetzt das Problem? Wird es nicht aktualisiert, oder was?
Egal welches Problem, ändere dieses Teil des CheckGas zu:
if(veh)
{
new Float:ST[4];
GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
Kilometer[veh] += ST[3];
format(string, sizeof string, "Kilometer: %d km", floatround(Kilometer[veh]));
printf("playerid: %d | ST3: %0.2f | Kilometer[%d]: %0.2f | string: %s", i, ST[3], veh, Kilometer[veh], string);
TextDrawSetString(Tacho7[i],string);
}
Dann poste was im Log steht wenn du fährst.