if(IsPlayerInRangeOfPoint(playerid,15.0,Tankstellen[i][1],Tankstellen[i][2],Tankstellen[i][3]))
Beiträge von [EGC] selEcT
-
-
Es KÖNNTE gehen, allerdings wäre das recht umständlich und viel zu scripten denk ich mal.
Aber in einer datenbank sollte man eh nichts löschen, wenn dann verändern, aber nicht löschen.
Damit der User nicht mehr auf den Server kann, kannst du ja ein neues feld (z.B. bann) machen. -
Hach, endlich geht das Forum wieder einigermassen also
Wie lange kann ein Array sein?
Also ich möchte gerne
new field[110][32];
aber soweit kommt er nicht (getestet mit print("field"), wird aber nicht in der konsole angezeigt).
aber wieso geht
new field[4][32];
???
das wäre blöde, wenns nicht gehen würde. Gibt auch nirgens ne wiki dazu.
MFG
-
mein gf-edit hat ca. 35k zeilen und ist gerade mal 1.5 MB gross o_O (objectstreamer als fs )
-
//oben
forward Waffen(playerid);
new waffen[MAX_PLAYERS];if blabla /suchen //der befehl halt ;)
if(waffen[playerid] == 0)
{
//dein suchen befehl
waffen[playerid] = 1;
SetTimerEx("Waffen",600000,0,"i",playerid); //weiss grad den SetTimerEx befehl nicht auswendig, glaub stimmt aber
}//Set timer ex
public Waffen(playerid)
{
waffen[playerid] = 0;
}geht vielleicht so
-
Da ich grad sowieso Zeit hab, bin ich mal 20 Minuten mitm Turismo durch Sa geheizt und hab 19 Tankstellen gefunden.
Allen habe ich einen Namen zugewisen. Dieser hängt entweder vom Standort ab oder ich ich den Namen genommen, den die Tankstelle auf einem RL Server hat.
Bei einer Tankstelle ist mir der Name nicht mehr eingefallen.PS: Karte folgt in wenigen Minuten
wow kann ich sicher auch gebrauchen, thx
hast du zufällig noch mehr zeit und kannst auch die koordinaten der gelben pfeile (eingänge) suchen? xD
-
Ich leibe es ja, wenn Leute ohne AHnung etwas schreiben.
ich hoffe du meinst nicht mich..(Edit by DMA:// Nein, Realist. ;))
Erstmal: Ja, Public Funktionen haben viel mehr interne Aufrufe von Operationen als eine herkömmliche Funktion.
Publics sollten deswegen oft vermieden werden, und nur bei Timern und Callbacks verwendet werden.hab ich mir doch gedacht.
Nunja, man muss ein gutes Mittelmaß finden.
Das ist je nach Server unterschiedlich.
Zuviel in einem Timer ist schlecht, wenig und viele Aufrufe dagegen Schwachsinn.das heisst, 2 timer à 1 sekunde mit je ca. 20 zeilen könnte man als beispiel zusammennehmen?
[quote='DMA',index.php?page=Thread&postID=381821#post381821Alle "CMD" vereinfachungen sind langsamer als ein Vergleich mit strcmp und einer beliebigen "String Part Get" Methode.
Dafür ist DCMD z.B. übersichtlicher. ;)[/quote]dann lass ich das drin xD die kommentarfunktion macht es auch übersichtlich
sonst noch sachen für die scriptoptimierung? ausser kleinere strings (das weiss ich schon :D)
-
Hallo Breadfish!
Vorneweg, ich hab nichts darüber gefunden bei der Suche.
Ich möchte hier einen Thread machen, bei dem alle reinschreiben können, was bei einer Scriptoptimierung vorgenommen werden kann. Dazu hab ich auch einige Fragen:
- Kann man alle durch forwards definierte publics zu stocks machen? Und bringt das auch was?
- was braucht mehr leistung? mehr timer zu einem Intervall oder ein timer zu einem intervall mit allem drin?
- braucht dcmd weniger leistung?MFG
-
falscher ort
aber was kommt denn nach dieser frage?
-
Alle Includes drinne?
Oder so..Mfg Andy
includes braucht man nur zum scripten
sind die sachen vorhanden?
- scriptfiles
- mysql datenbank & plugin (wenn das brauchst)
- gm vorhandenmfg
-
ja aber da sollten doch mysql befehle eigentlich gleich sein..? Kennst du den eines, das 100 prozentig von linux unterstützt wird?
-
-
jaa aber es ist ja bei den meisten unterschiedlich.. oder hats ein ähnliches plugin wie das von strickenkid?
Ich hab jetzt das von Adrenaline genommen, alles im script ersetzt, allerdings macht dieses plugin kein log, oder gibt es ne möglichkeit? Weil das brauch ich eigentlich zum schauen, was ausgelesen wird, da mir bei diesem Plugin leider irgendwie überall 0 steht, obwohl das nicht so in der db steht?! Wie kommt das? ich hab das plugin, ich hab die lib, die include etc. davon..
-
ja aber dann müsste ich das ganze script verändern..
-
Hi
Mein Linuxserver crasht, sobald ich aus mysql bei den channels lade. in der log steht am schluss:
[Wed Jun 30 18:29:33 2010] Function: 'mysql_query' executed: "SELECT * FROM channels WHERE ID = 10 LIMIT 1" with result: "0".
[Wed Jun 30 18:29:33 2010] Function: 'mysql_fetch_field:iAdmin' called with result: "".
[Wed Jun 30 18:29:33 2010] Function: 'mysql_fetch_field:iMOTD' called with result: "".
[Wed Jun 30 18:29:33 2010] Function: 'mysql_fetch_field:iPassword' called with result: "ä".
[Wed Jun 30 18:29:33 2010] Function: 'mysql_fetch_field:iNeedPass' called with result: "".iAdmin und iMOTD stimmen, aber in der Datenbank ist iPassword leer und iNeedPass ist 0! Die anderen 9 Datensätze liest es aber ganz normal und richtig aus.
Bei Windows funktioniert das auch richtig o_O
Ich weiss net mehr weiter wieso funktioniert das unter Windows, aber nicht unter Linux? Wieso liest er beim letzten teil etwas falsches aus?
Er verbindet sich auch ganz normal mit der Datenbank, fängt bei der Tabelle stuff an, geht die erfolgreich durch, geht bei channels weiter (LoadIRC()), genau wie es sein sollte. Nur eben dann kommt er beim letzten Datensatz zu diesem Problem und nachher stürzt der Server ab. Ist das Plugin für Linux und Windows gleich gedacht?
MFG
/edit: es kann doch nicht sein das das problem niemand hat?!
-
Connecten:
public OnPlayerConnect(playerid)
{
//Andere dinge
new plname[32];
GetPlayerName(playerid, plname, sizeof(plname));
new sqlaccountstatus = MySQLCheckAccount(plname);
if(sqlaccountstatus != 0)
{
PlayerInfo[playerid][pSQLID] = sqlaccountstatus;
//Login
}
else
{
//Register
}
}Einloggen:
stock MySQLLogin(playerid, password)
{
new string[128];new query[128];new data[256];new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
PlayerInfo[playerid][pSQLID] = MySQLCheckAccount(playername);
format(query, sizeof(query), "SELECT * FROM user WHERE id = %d LIMIT 1", PlayerInfo[playerid][pSQLID]);
mysql_query(query);
mysql_store_result();
if(mysql_fetch_field("Password", data))
{
if(!strcmp(data,password,false))
{
mysql_fetch_field("ID",data);PlayerInfo[playerid][pSQLID] = strval(data);
mysql_fetch_field("Playername",data);strmid(PlayerInfo[playerid][pName], data, 0, strlen(data), 255);
mysql_fetch_field("Password",data);strmid(PlayerInfo[playerid][pPassword], data, 0, strlen(data), 255);
//etc.
}
else
{
//Passwort Falsch
}
}
mysql_free_result();
return 1;
}Registrieren:
stock MySQLRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
new newaccountsqlid = MySQLCreateAccount(playername, password);
if (newaccountsqlid != 0)
{
PlayerInfo[playerid][pSQLID] = newaccountsqlid;
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
GetPlayerName(playerid,PlayerInfo[playerid][pName],32);
PlayerInfo[playerid][pSQLID] = MySQLCheckAccount(PlayerInfo[playerid][pName]);
new query[MAX_STRING];
format(query, MAX_STRING, "UPDATE user SET Playername='%s' WHERE ID=%d",PlayerInfo[playerid][pName],PlayerInfo[playerid][pSQLID]);mysql_query(query);
//etc.
}
else
{
SendClientMessage(playerid, COLOR_RED, "Beim Erstellen deines Accounts ist ein Fehler aufgetreten.");
Kick(playerid);
return 0;
}
}
return 0;
}MySQLCheckAccount:
stock MySQLCheckAccount(playersname[])
{
new query[128];
new escstr[MAX_PLAYER_NAME];
mysql_real_escape_string(playersname, escstr);
format(query, sizeof(query), "SELECT id FROM user WHERE LOWER(Name) = LOWER('%s') LIMIT 1", escstr);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows()==0)
{
return 0;
}
else
{
new strid[32];
new intid;
mysql_fetch_row(strid);
intid = strval(strid);
return intid;
}
}MySQLCreateAccount
stock MySQLCreateAccount(newplayername[], newpassword[])
{
new query[128];
new plname[64];
new password[64];
mysql_real_escape_string(newplayername, plname);
mysql_real_escape_string(newpassword, password);
format(query, sizeof(query), "INSERT INTO `user` (`Name`, `Password`) VALUES ('%s', '%s')", plname, password);
mysql_query(query);
new newplayerid = MySQLCheckAccount(newplayername);
if (newplayerid != 0)
{
return newplayerid;
}
return 0;
}Ich hoffe ich muss das net so erklären, doch wenn, dann einfach fragen (HIER GEHTS NACH DER ID!! NICHT NACH DEM NAMEN!!)
-
OK, ich hab leider dieses Plugin nicht
Man könnte ein System machen, wo er den namen suchen geht, ich hab mich halt für die ID entschieden
Ich erklärs dir wenn ich zuhause bin
-
anhand des mysql logs könnte man eben sehen, wo der fehler liegt. Ich bin nicht zuhause und kann dir deshalb auch net gut helfen
-
Najoa MySQL ist halt neuland für mich, und irgendwoher muss ich das ja lernen oder?
Erstmal dickes Danke hat mir schonmal gut weitergeholfen!
Ich hab jez ne Tabelle erstellt mit "ID" ,"Name","Passwort" & "Level"
Wozu ist jez das "ID" mit dem automatischem erhöhen? Also ich verstehe ja das ich irgendwas brauch um später sagen zu können "Diese Tabellenzeile gehört diesem User"
Dafür kann ich dann diese ID benutzen?
Ja, kannst du. Das mit dem automatisch erhöhen passiert dann, wenn sich ein neuer benutzer registriert (zumindest bei mir ^^), er überprüft, wieviele datensätze die datenbank hat und nimmt dann die letzte ID Plus 1. Dort ist dann der neue Benutzer drin.Außerdem, ich habe die Tabelle wie bereits gesagt erstellt,wie leg ich da jez z.B nen User rein?
puhh du meinst scripttechnisch? Das geht ein bisschen länger ich bin im moment nicht zu hause, also kann ich dir das net so gut erklären. Was du aber brauchst ist 4 Variablen für den User im Script:
z.B.
Player[playerid][pSQLID] --> Die ID des Datensatzes (für die eindeutigkeit )
Player[playerid][pName] --> Der Name im Datensatz
Player[playerid][pPasswort] --> Das Passwort im Datensatz
Player[playerid][pLevel] --> Das Level im DatensatzIn diese Variablen kommen dann die Daten aus der Tabelle.
Zuerst müssen diese aber gefüllt werden. Dafür müsste ich wissen, welches Plugin du verwendest. Ich verwende dieses (http://strickenkid.info/mysql_plugin/1.2.X/
MFG
-
ist das nich das Plugin von Gstyleerzz oder wie der heisst? R4 Plugin?
dort gibts doch eine funktion samp_mysql_debug oder so was, was man ins script schreiben kann und der macht da dann ein logfile für die mysql befehle..
ich benutze das von strickenkid und hat diese funktion implementiert (http://strickenkid.info/mysql_plugin/1.2.X/, Version 1.2.1).