public inf(playerid)
Beiträge von RnBexclusiv
-
-
Geh mal auf Seite 7 da findest den Code in Pastebin
-
Laggt ein bisschen,
oder liegt des an deinem pc?
-
Dein erstes WBB Design?
Wenn ja, finde ich es recht geil, aber auch wenn es nicht dein erstes war.
mfg Kavkus
-
Danke für deine Sehr Gute Arbeit Danny,
ohne dich wär hier bestimmt ein durcheinander gewesen.
Trotzdem schade das du gehst, doch ist verständlich.
-
Alter mukkl,
du kleines Kind, les erstmal die Regeln durch, dann weist du da es eine Suchfunktion gibt.
-
Wie gesagt,
fast jeder hier hat sich das Scripten selbstbeigebracht.
Ein paar haben vllt mal hilfe bekommen, die hier jeder im Forum bekommt wenn er nett und deutlich fragt.
Setzt dich einfach mal an neue Sachen ran, wenn was nicht geht. Probier es selbst herauszubekommen, und wenn de dann immernoch nicht weiterkommst,
dann poste es hier im Forum.
-
Irgendwie sucht jeder iwi nen Scripter,
bringt es euch selbst bei lol
-
Es gibt etliche Tutorials benutzt bitte die Such Funktion.
-
Hm...okay es liegt am SelectedMenuRow,
weil er hat ein print reingesetzt, was aber beim auswählen nicht erschienen ist.
-
Okay Danke,
ich habe diese Variante zwar noch nicht probiert.
Aber ich stell sie mal zusätlich dazu
-
Ohne Scriptausschnitte können auch Profis nichts anfangen,
zudem brauchen wir erstmal dein Code wo derjenige sich Regsitriert.
-
Okay Danke,
ich werde es oben editieren.
Und danke für das Lob.EDIT://Leider kann ich es nicht editieren, da es sonst meinen ganzen Post vermasselt, nichts ist mehr geordnet irgendwie,warum keine ahnung.
-
erstmal n Mod bitte in Godfather bereich.
Und 2 funktioniert der House Generator nicht da da LARP über Mysql läuft,
oder doch nicht? Weiß ich jetzt nicht ganz genau -
Soweit ich das sehen kann,
sehe ich keine fehler, außer du setzt natürlich den Job falsch wo er den Job bekommt.
Das wäre meine einzigste überlegung -
4.Grunderklärungen der 2Arten zum Lesen aus der Tabelle
Es gibt insgesamt 2Arten vom auslesen aus den Tabellen
die 1Art ist per split, split definiert ihr so in eurem Script:
stock split(const strsrc[], strdest[][], delimiter)
{
new
i,
li,
aNum,
len;
while(i <= strlen(strsrc))
{
if(strsrc[i]==delimiter || i==strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
Split ist dazu da, um aus den einzelnen Zeilen der Reihe der Tabelle sachen herauszulesen.
Dies kann zwar die 2Art auch, aber ihr werdet nachher den Unterscheid merken.
So, die 2Art ist per strtok, diese ist im Aufbau etwas leichter.
strtok definiert ihr im Script so:
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
So dies sind die 2Arten des auslesen.5. Erstellen einer Tabelle
So, um im Script etwas zu Laden brauchen wir nun erstmal eine Tabelle,
(Ich erkläre euch jetzt per Schritte wie es im Navicat Lite geht).
Als erstes öffnet ihr euer Navicat und wählt eure Datenbank.
Und erstellt dort eine neue Tabelle, dann geht ihr in diese Tabelle.
Wie ihr seht, steht nichts drinnen,jetzt befindet ihr euch gerade im Designbereich für eure Tabelle,
dies bedeutet dort könnt ihr neue Einträge einschreiben.
GANZ Wichtig, am besten immer in Zeile 1 die ID, umso übersichtlicher ist es,als Typ wählen wir INT.
Nun noch eine Wichtige Sache, ihr müsst bei einer neuen Tabelle,
die erste Spalte bei den Feldern müsst ihr hinten bei NULL-Werte Erlauben einen hacken hinmachen und in der Letzte spalte einen Key rein.
So Nehmen wir mal die 2Zeile,
Nehmen wir an ihr wollt einen Namen speicher/Laden.
Schreiben wir vorne bei Name pName hin.
Als Typ wählen wir text, nun ACHTUNG
bei Länge und Dezimal braucht ihr nichts einzuschreiben,
da diese beim Speichern Automatisch eingesetzt wird.
Dann speichert ihr nun unter dem Namen Player ab.Dies ist nun eure erste Tabelle.6.Laden aus der Tabelle
So wir erstellen erstmal eine PlayerInfo da es dann umso leichter ist.
enum pinfo
{
pName
}
new PlayerInfo[MAX_PLAYERS][pinfo];
Das müsste erstmal reichen.
Nun zum Laden.
ART 1:
new Player;stock LoadPlayer()
{
new
data[200],
sql[50],
line[6][20];
samp_mysql_query("SELECT COUNT(*) FROM Player");//Wählt die Tabelle aus
samp_mysql_store_result();
samp_mysql_fetch_row(data);
Player = strval(data);
for(new i;i<Player;i++)
{
format(sql, sizeof(sql), "SELECT * FROM Player WHERE id='%d'", i);
samp_mysql_query(sql);
samp_mysql_store_result();
if (samp_mysql_num_rows() > 0)
{
samp_mysql_fetch_row(data);
split(data, line, '|');
PlayerInfo[i][pName] = strval(line[1]);//strval für einen string/Text, floatstr für ein Float
}
}
}
Art 2:
stock LoadPlayer()
{
new Data[100];
new rcnt=1;
new Field[64];
new query[128];
samp_mysql_query("SELECT * from Player"); //Wählt die Tabelle
samp_mysql_store_result();
samp_mysql_fetch_row(Data);
samp_mysql_strtok(Field, "|", Data);
while (samp_mysql_strtok(Field, "|", "")==1)
{
if(rcnt==2)PlayerInfo[playerid][pName]=strval(Field);
rcnt++;
}//Nun haben wir auch den Namen geladen, der jetzt wo anderst verwendet werden kann
return 1;
}
Wie ihr seht, gibt es nicht große unterschiede.
So nun sind die Werte geladen, doch um das Laden überhaupt starten zu lassen, fügen wir bei OnGameModeInit das hier ein,
LoadPlayer();So, nun kommen wir zum Speichern.
7.Speichern in eine Tabelle
Speichern ist genauso einfach wie das Laden.
Fangen wir an mit SavePlayer();
stock SavePlayer(p)
{
if(p == 0)
new
sql[384],
Name[32],
message[32];
samp_mysql_real_escape_string(PlayerInfo[p][pName], Name);
format(sql, sizeof(sql), "UPDATE Player SET pName='%s' WHERE id=%d",PlayerInfo[p][pName],p);
samp_mysql_query(sql);
return 1;
}
So wird der Name in die Tabelle wieder eingespeichert
Diese können wir nun bei OnPlayerDisconnect speichern lassen.
SavePlayer(playerid);So, nun wisst ihr wie man lädt und speichert, falls ihr irgendwelche fragen habt, postet sie hier und nicht im ICQ.
mfg Kevin(Kavkus).
Verbesserungsvorschläge/Kritik sind sehr gewünscht. -
Also das von Zombie.Modder finde ich sehr Simple und es verbaucht viel platz.
Ich würde es wie Bright machen, in einem Arrey und fertig.
Logisch denken hilft sehr oft.
Sehr Sehr viele Scripter machen dinge, wo sie sich vorher nichts gedacht haben. -
Hey,
sehr gutes Tut,
aber ich denke mal zu einem Guten Tutorial gehören auch erklärungen,
die ich hier im TUT aber leider nicht sehe,
seh nur was von reinkopiert und sowas,
Erklärungen wären für die Anfänger bestimmt hilfreich,
ich mein dafür sind ja tutorials da.
mfg Kavkus -
Hallo Liebe Community,
da ich inmoment etwas langeweile habe,
werde ich nun ein Mysql Tutorial machen,
das meistens geupdatet wird.
Nun fangen wir mal an.1.Installation
Für die installation benötigt ihr natürlich erstmal die Mysql Dateien, dieses findet ihr Hier
In dem Forum wählt ihr aus, was für ein Betriebssyste ihr habt.
Desweiteren müsst ihr euch das Pawn-kit herunterladen, damit ihr das Include besitzt.
Das Include wisst ihr wohl wo es hinkommt.Wenn ihr die Mysqldatei entpackt habt,bekommt ihr auch einen Sourceordner, diesen benötigt ihr nicht.
Ihr braucht lediglich die sampmysql.dll.
Ihr erstellt in eurem Serverordner einen neuen ordner namens Plugins,
in der ihr das Plugin sampmysql.dll einfügt.
Natürlich müsst ihr dieses Plugin auch als Plugin in eurer Serverconfig reinschreiben.
Dies passiert mit:Um die Mysqlfunktionen in eurem Script anwenden zu können,
müsst ihr in eurem script natürlich das Include hinzufügen:
#include <a_sampmysql>2.Funktionen
- samp_mysql_connect()
- samp_mysql_select_db()
- samp_mysql_query()
- samp_mysql_store_result()
- samp_mysql_fetch_row()
- samp_mysql_get_field()
- samp_mysql_num_rows()
- samp_mysql_num_fields()
- samp_mysql_strtok()
- samp_mysql_ping()
- samp_mysql_real_escape_string()
- samp_mysql_free_result() => DON'T USE IT, IT WILL CRASH YOUR SERVER !!!
- samp_mysql_close()
(Von SA-MP.com kopiert)
3.Verbindung zu MYSQL
Vorab braucht ihr XAMPP auf eurem Computer, damit ihr überhaupt eine MYSQL auf eurem Computer habt.
Hier Weiter Infos dazu + INSTALLATION von XAMPP
Nun fehlt uns nurnoch ein Mysql Programm,
ich benutze Navicat ist sehr leicht und praktisch.
Download
Dann Connectet ihr auf eure Mysql und erstellt eine neue Datenbank mit dem Name samp.Nun zum Script.
Nun gehen wir zu OnGameModeInit,
dort fügen wir dies hinzu
stock MySQLConnect(sqlhost[], sqluser[], sqlpass[], sqldb[])
{
samp_mysql_connect(sqlhost, sqluser, sqlpass);//Connected auf die Mysql
samp_mysql_select_db(sqldb);//Wählt die Datenbank
if(samp_mysql_ping() == 0) return 1;//Überprüft die Connection
else
{
samp_mysql_connect(sqlhost, sqluser, sqlpass);//Wieder alles von vorn
samp_mysql_select_db(sqldb);
if(samp_mysql_ping() == 0) return 1;
else
{
SendRconCommand("exit");
return 0;
}
}
}
Variante von Nachoman:
stock MySQLConnect()
{
new arrCoords[19][64];
new strFromFile2[256];
new sqlhost[56], sqluser[56], sqlpass[64], sqldb[56];
new File: file = fopen("config/mysql.cfg", io_read);
if (file)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');strmid(sqlhost, arrCoords[0], 0, strlen(arrCoords[0]), 255);
strmid(sqluser, arrCoords[1], 0, strlen(arrCoords[1]), 255);
strmid(sqlpass, arrCoords[2], 0, strlen(arrCoords[2]), 255);
strmid(sqldb, arrCoords[3], 0, strlen(arrCoords[3]), 255);
fclose(file);
}samp_mysql_connect(sqlhost, sqluser, sqlpass);//Connected auf die Mysql
samp_mysql_select_db(sqldb);//Wählt die Datenbankif(samp_mysql_ping() == 0) return 1;//Überprüft die Connection
samp_mysql_connect(sqlhost, sqluser, sqlpass);//Wieder alles von vorn
samp_mysql_select_db(sqldb);if(samp_mysql_ping() == 0) return 1;
SendRconCommand("exit");
return 0;}
So nun seid ihr mit der Mysql verbunden, nun könntet ihr Sachen aus dieser Laden und so weiter, dies kommt aber erst im Nächsten Tutorial das in den nächsten Stunden erscheinen wird.
Also freut euch auf v0.2.mfg Kavkus
P.S Ich hoffe es ist wenigstens ein bisschen verständlichEDIT://Public in Stock geändert.
-
Schonmal aufs Datum geschaut?^^