Sieht ganz schick aus, finde es aber irgendwie zu leer...
mfg. ![]()
Sieht ganz schick aus, finde es aber irgendwie zu leer...
mfg. ![]()
man den mit VPN sehr einfach umgehen.
Man kann alle Bans umgehen ![]()
Das mit dem Nachbar stimmt schon...
Wir denken da aber drüber nach und suchen nach Lösungen
Range Ban ? ![]()
Mal eine Frage nebenbei, wird "state" so wie "new" auch blau markiert ?
Wenn nein, würde ich mich freuen, wenn das gemacht werden würde ![]()
mfg. ![]()
called when not connected to any database.
Anscheinend bist du mit keiner Datenbank verbunden...
Sicher das du eine erstellt hast und die auch "Daten" heißt ![]()
wär nett wenn ihr mir erklären könntet was das alles bewirgt bei den Toren weil ich bin absulut neu was Tor angeht
Wenn du willst, kannst du meine Include verwenden, die macht das eigentlich alles relativ einfach: [ INCLUDE ] Kleine Tor Vereinfachung
mfg. ![]()
Ich zitiere mal von maddin, da dir das helfen könnte:
Nun geht ihr weiter zu
public OnGameModeInit()
und schreibt dort folgendes rein:
Connect_To_Database();
Diese Funktion werden wir benutzen um auf unsere Datenbank zu verbinden. Die Funktion selbst erstellen wir jetzt. Dafür Scrollt ihr ganz nach unten ins Script und fügt dort folgendes ein:
stock Connect_To_Database()
{
mysql_connect(MySql_Host, MySql_User, MySql_Database, MySql_Password); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
{
//Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
return true;
}
else
{
//Falls nicht wird erneut versucht eine Verbindung aufzubauen.
print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
mysql_connect(MySql_Host, MySql_User, MySql_Database, MySql_Password);
if(mysql_ping() == 1)
{
print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
return true;
}
else
{
//Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
print("<-| [MYSQL] Der Server wird nun beendet!");
SendRconCommand("exit");
return true;
}
}
}
mfg. ![]()
In was in Navicat ?
Nein, über die Funktion mysql_connect(); versuchst du eine Verbindung zu der Datenbank aufzubauen und in dieser Funktion im Script, verwendest du die falschen Daten ![]()
Gleich mal für PC vorbestellt :o
Mach ich auch mal ![]()
Freut mich, dass es euch gefällt ![]()
mfg. ![]()
wäre aber net schlim wen new dadrin ist
Doch, da dann LCN1 nur lokal deklariert wäre und du die Variable nur unter OnGameModeInit() aufrufen könntest, du willst sie aber auch unter OnPlayerCommandText() aufrufen ![]()
mfg. ![]()
public OnGameModeInit()
{
new LCN1;
LCN1 = CreateObject(971, -2566.29, 923.45, 67.47, 0.00, 0.00, 0.00);
return 1;
}
Nope, wenn dann so:
new LCN1; //Muss ja eine Globale Variable sein
public OnGameModeInit()
{
LCN1 = CreateObject(971, -2566.29, 923.45, 67.47, 0.00, 0.00, 0.00);
return 1;
}
mfg. ![]()
dennoch versteh ich kein wort davon.
Mhm...ich habe eigentlich versucht es so gut zu erklären wie es geht ![]()
Mhm, lies es evtl nochmal ![]()
Aber danke für die Information ![]()
mfg. ![]()
Guten Morgen liebe Breadfishler,
dieses Tutorial ist eigentlich nur aus Langweile entstanden, aber ich hoffe trotzdem, dass ich einigen von euch noch etwas zeigen kann.
Das was ich hier nutze, gilt eigentlich nur als Code Optimierung und man muss es nicht zwingend nutzen, aber dennoch zeige ich es euch, einfach damit ihr sowas mal gesehen habt und grob wisst was es macht ![]()
Allgemeines:
Also state ist eigentlich eine Funktion, mit der man gleiche Funktionen mehrmals definieren kann, um sie in verschiedenen Situationen zu nutzen.
Machen wir mal eine Gegenüberstellung, normal nutzt man ja Variablen, sprich das sähe so aus:
//Alter Code
#include <a_samp>
new var = 0; //Hier deklarieren wir die neue Variable
main()
{
var = 1; //Hier setzen wir den Wert auf 1
SetTimer("Test", 1000*5, 0);
}
forward Test();
public Test()
{
switch(var)
{
case 0: print("Falsch !"); //Da der Wert 1 ist und nicht 0 wird das nicht aufgerufen
case 1: print("Richtig !"); //Das hier wird aufgerufen, da der Wert 1 ist
}
}
Das würde jetzt nach 5 Sekunden "Richtig !" printen ![]()
Mit unserem state Statement, würde es so aussehen:
//Neuer Code
#include <a_samp>
main()
{
state call:test; //Hier setzten wie den state "call" auf "test"
SetTimer("Test", 1000*5, 0);
}
forward Test();
public Test() <call:test1> //Wird nicht aufgerufen, da call nicht "test1" ist sondern "test"
{
print("Falsch !");
}
public Test() <call:test> //Wird aufgerufen, da call auf "test" ist
{
print("Richtig !");
}
Hier würde auch nach 5 Sekunden gerpintet werden "Richtig !".
Grund für die Nutzung:
Der Grund warum man dies nutzen sollte, ist eigentlich nur die Übersicht ![]()
Der extra Callback:
Ein großes Feature hat dieses Statement noch, es hat nämlich einen eigenen Callback:
//Nutzung dieses Callbacks
#include <a_samp>
main()
{
state call:me; //setzten "call" auf "me"
}
entry() <call:me> //Erklärung wieso das aufgerufen wird, steht unten drunter:
{
print("hi");
}
Das würde jetzt sobald "main()" geladen wird "hi" printen, da immer "entry()" aufgerufen wird, sobald man state bla:bla; schreibt und es an das entry anhängt ![]()
Mehrere Definierungen:
Man kann auch folgendes tun:
#include <a_samp>
main()
{
state call:Level1; //Setzen "call" auf "Level1"
state call:Level2; //Setzen "call" jetzt auf "Level2"
state call:Level3; //Setzen "call" und jetzt auf "Level3"
}
public OnGameModeInit() <call:Level1, call:Level2> //Wird nur aufgerufen wenn call Level1 oder Level 2 wäre
{
print("Wird leider nicht gerpintet, da call:Level 3 ist und nicht 1 oder 2 !");
return 1;
}
public OnGameModeInit() <call:Level3> //Da call: als letztes Level 3 war/ist, wird das hier aufgerufen:
{
print("Juhuuu !");
return 1;
}
Alltags Beispiele:
Zu guter letzt noch ein paar Beispiele wo man es gebrauchen kann ![]()
Allgemein kann man es nur für Globale Sachen nutzen:
//Hier ein Beispiel zu dem ooc-Chat
#include <a_samp>
#include <ocmd>
main() {
state oState:none; //Setzen "oState" auf "none"
}
ocmd:oooc(playerid, params[]) <oState:none> //Wird zuerst aufgerufen, da "oState" auf "none" ist
{
#pragma unused params
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Du bist kein Admin !");
oState:aktiv; //Setzen "oState" auf "aktiv"
SendClientMessageToAll(-1,"Ein Admin hat den ooc-Chat aktiviert !");
return 1;
}
ocmd:oooc(playerid, params[]) <oState:aktiv> //Wird absofort aufgerufen, da "oState" auf "aktiv" ja ist
{
#pragma unused params
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Du bist kein Admin !");
oState:none;
SendClientMessageToAll(-1,"Ein Admin hat den ooc-Chat deaktiviert !");
return 1;
}
ocmd:o(playerid, params[]) <oState:none> return SendClientMessage(playerid,-1,"Der ooc-Chat ist momentan deaktiviert !"); // Wenn "oState" auf "none" ist
ocmd:o(playerid, params[]) <oState:aktiv> //Wenn "oState" auf "aktiv" ist
{
new string[128];
if(sscanf(params,"s",string)) return SendClientMessage(playerid,-1,"/o [text]");
return SendClientMessageToAll(-1,string);
}
Ich hoffe euch hat es ein wenig geholfen und gefallen, würde mich über ein paar Kommentare freuen ![]()
mfg.
danke das es euch gefällt.
Bitte, mir gefällt es nämlich auch sehr gut ![]()
Wie überprüfe ich in einem Dialog ob die Eingabe eine Zahl war ?
Sobald du auf einen Knopf von dem Dialog drückst wird dieser Callback aufgerufen:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) //die 1 ändern in deine dialogid !
{
if(!repsonse) return 1; //Wenn er auf Abbrechen klickt
new zahl = strval(inputtext);
//zahl hat den Wert von dem, was in das Input Fenster eingegeben wurde !
}
return 1;
}
mfg. ![]()
Poste mal bitte den ganzen Callback OnPlayerCommandText, dann schreibe ich es dir richtig ![]()
mfg. ![]()
nimm mal nur cmd und mach über alls aus cmdtext cmd ist das GF ? oder willst du was aus gf in selfmade rien klatschen ?
Man man man...
Also, erstmal dieses cmd ist notwendig, dafür das man strtok nutzen kann ... solltest du evtl auch ![]()
und der Fehler kommt anscheinend einfach nur daher, dass er das nicht in den Callback OnPlayerCommandText schreibt, sondern irgendwo anders hin, denn eigentlich muss man nicht unbedingt strtok nutzen, man könnte auch sscanf nutzen, dann bräuchte man auch kein "cmd" ![]()
mfg. ![]()
Habe es dir mal geschrieben, wenn du sozial bist, schickste mir den PSC Code:
<?php
function mysql_Get($Table, $Field, $Where, $Is)
{
mysql_real_escape_string($Table);
mysql_real_escape_string($Field);
mysql_real_escape_string($Where);
mysql_real_escape_string($Is);
$result = mysql_query("SELECT $Field FROM $Table WHERE $Where = '$Is'");
if (mysql_num_rows($result) == 0) return -1;
while ($row = mysql_fetch_assoc($result)) {
return $row[$Table];
}
}
function mysql_Set($Table, $Field, $To, $Where, $Where2)
{
mysql_real_escape_string($Table);
mysql_real_escape_string($Field);
mysql_real_escape_string($Where);
mysql_real_escape_string($Where2);
mysql_query("UPDATE `$Table` SET `$Field` = '$To' WHERE `$Where` = '$Where2'");
return 1;
}
?>
Alles anzeigen
Ist nicht getestet, sollte aber gehen ![]()
Man brauch nur einen mysql_Set und einen mysql_Get Befehl, da die Variablen so schön sind und man nicht direkt auf String/Floats/Integers achten muss ![]()
mfg. ![]()