Nun, das kannst du auch wie in PHP machen, einfach so:
mysql_query("SELECT `Name` FROM `Tabelle` WHERE `Hauskey`='4'");
mfg. ![]()
Nun, das kannst du auch wie in PHP machen, einfach so:
mysql_query("SELECT `Name` FROM `Tabelle` WHERE `Hauskey`='4'");
mfg. ![]()
public BanWithMessage(playerid)
{
new string[258];
BanEx(playerid, GetPVarString(playerid, "Grund", string, 258)); // Hier soll dan der Grund wieder ausgegebn werden
return 1;
}
Der Fehler liegt hier, dass muss so aussehen:
public BanWithMessage(playerid)
{
new string[128];
GetPVarString(playerid, "Grund", string, 128);
BanEx(playerid,string);
return 1;
}
//Edit: und in deinem cmd musst du das so machen:
SetPVarString(pID, "Grund", reason);
SetTimerEx("BanWithMessage", 100, true, "i", pID); // Hier wird es im Sting gespeichert
mfg. ![]()
So:
new bool:var;
var = false; //eig unnötig, da der Wert eh auf false ist ^.^
switch(var) {
case false: print("false");
case true: print("true");
}
Das würde in diesem Fall natürlich false printen ![]()
mfg. ![]()
Vor dem Close, eine Frage, wie ist es Scripttechnisch möglich ?
Nun, ganz einfach mit folgender Funktion: http://wiki.sa-mp.com/wiki/SetObjectMaterialText
mfg. ![]()
So, ich finde hier sollte auch wieder mal was rein und da ich mal wieder Langeweile habe, schreibe ich hier mal ein paar Sachen rein:
Booleans:
Wenn eine Variable nur 2 Werte annehmen brauch, sagen wir 0 und 1, dann sollte man anstatt so:
//Falsche Variante
new var;
//In irgendeinem Callback
var = 1;
//Unter einem anderen Callback
if(var == 1)
Sollte man es so machen:
//Richtige Variante
new bool:var;
//In irgendeinem Callback
var = true;
//Unter einem anderen Callback
if(var == true)
Das sorgt dafür, dass von Anfang an weniger Speicherplatz für diese Variable verbraucht wird.
Char Arrays
Das ist ein Thema was ich wirklich jedem ans Herz lege !
Jeder kennt folgendes:
new var[MAX_PLAYERS];
if(var[playerid] == 1)
Nun das ist aber verdammt schlecht !
Jede Zelle bzw Spalte im Array verbraucht 4 Bytes, da MAX_PLAYERS (ohne das Makro zu verändern) eine größe von 500 hat, würde diese Variable:
verbrauchen !
Aus diesem Grund sogenannte char-Arrays verwenden, dass sähe dann so aus:
new var[MAX_PLAYERS char];
if(var{playerid} == 1) //Vorsicht: Hier { } verwenden anstatt [ ] !!!
Hier würde jede Zelle bzw Spalte im Array nur 1nen Byte verbrauchen !
Sprich wir verbrauchen 500 Bytes anstatt 2000 ! ![]()
Wichtig noch zu beachten, das geht nur bei 1 dimensionalen Arrays und auch nur bei Integern, wenn man das mit strings machen will muss man strpack benutzen (aber das ist eine andere Geschichte)...
Außerdem ist zu beachten, dass nur Werte von 0-255 möglich sind!
Sprich:
new test[MAX_PLAYERS char];
test{0} = 259; //Ist nicht möglich, da größer 255!
Strings-returnen
Viele von euch werden wahrscheinlich diese Funktion kennen:
stock PlayerName(playerid) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
return name;
}
Nun, hier returnen wir einen string, das führt zu sog. Memory Leaks und sorgt dafür dass euer Speicher unnötig belegt wird, denn diese Variable "name" wird Lokal erzeugt, aber sie wird durch das return nicht wieder "zerstört", somit bleibt der Speicher vorhanden.
Aus diesem Grund empfehle ich diese Variante:
//Oben im Script
new pName[MAX_PLAYERS][MAX_PLAYER_NAME];
//Unter OnPlayerConnect
GetPlayerName(playerid,pName[playerid],MAX_PLAYER_NAME);
//Nutzung:
format(string,sizeof(string),"Willkommen lieber %s",pName[playerid]);
Unnötig große Arrays
Wie oben schon mal angesprochen verbrauchen große Arrays viel Speicherplatz !
Ich zeige euch mal einige Beispiele die ihr sicher kennen werdet:
new string[256], string1[300], string2[499]; /* usw... */
format(string,sizeof(string),"bla...");
Also abgesehen davon, dass man das meistens eh mit 1ner Variable lösen kann, zeige ich euch nun das:
new string[] = "Hier euren Text rein...lieber %s",name[] = "Kaliber";
format(string,sizeof(string)+sizeof(name),string,name);
print(string); //würde ausgeben: "Hier euren Text rein...lieber Kaliber"
So das wars erstmal mit dem gröbsten, werde vielleicht noch einen 2. Part dranhängen, mal sehen ![]()
mfg.
//Edited: Infos
Du hast da 3x if(response==1) stehen, merkst du selber das da was falsch ist ![]()
Du musst das so machen wie mit dem 1. Dialog also:
if(dialogid == DIALOG_Perso_Nachname) {
format(SpielerInfo[playerid][sName],24,inputtext); //in "inputtext" steht der Text der eingegeben wurde
}
mfg. ![]()
Diese 3 Personen würden auf einer Seite in Facebook mit 10.000 Abos landen , um dort noch ein bisschen berühmter zu werden.
Fine das ja ein bisschen unsinnig, aber okay ![]()
Es ist eigentlich sehr erfeulich das es viel zu viele gute Dinge gibt als das man sagen könnte "Das ist es!"
Genau das finde ich auch, aus diesem Grund wird es bestimmt schwer, da einen Sieger festzustellen... ![]()
Aber trotzdem, gutes Gelingen ![]()
mfg. ![]()
nun kommt 4 error:
Schreibe es dann evtl mal so:
public IsPlayerAdminCall(playerid)
{
if(SpielerInfo[playerid][pAdmin] >= 1) return 1;
return 0;
}
mfg. ![]()
Nur über eine globale Variable und das nennt man dann auch nicht mehr Parameter ![]()
So z.B.
//Oben im Script
new test = 0;
ocmd:bla(playerid) {
test = 1;
}
//Unterm Callback
if(test==1)
mfg. ![]()
Habe eine frage kannst du das für mich machen habe schon mehrmals gemacht und klappt nie ,
wen ja Dan danke
Wieso nutzt du nicht meine Include ![]()
3 Zeilen musst du dann nur machen und dein Tor geht auf + zu ![]()
mfg. ![]()
Ich habe mal ein Include dafür geschrieben, schau dir das mal an:
[ INCLUDE ] Kleine Tor Vereinfachung
mfg. ![]()
Nun meine Frage lautet für was ist dies Nützlich? was könnte man damit machen wie ich sehe werden oben alle Cars aufgelistet könnte man z.B damit ein Autohaus System
erstellen sagen wir ich klicke ein Auto an und zack habe ich es gekauft? oder wofür benutzt ihr es so?
Genau dafür kannst du es verwenden ![]()
Dörfler hat dafür ein ganz nützliches Include geschrieben, kannst du dir ja mal anschauen: mSelection
mfg. ![]()
Das erste Problem ist, das die CarHP nicht richtig im Tacho angezeigt werden. Dort steht immer 1% statt die richtige CarDL
Du musst es so schreiben:
new Float:carhealth;
GetVehicleHealth(GetPlayerVehicleID(i),carhealth);
format(String,sizeof(String),"Fahrzeugzustand: %d%",floatround(carhealth));
mfg. ![]()
Schick mir mal deine TeamViewer Daten per PN pls, will mir das mal anschauen, dein Fehler liegt bestimmt in der Deklaration der Variablen ![]()
mfg. ![]()
Ich bin mir jetzt nich sicher aber probiers mal so
new preis = "ZuTanken * BENZINPREIS";
Nein ![]()
Schreibe das mal so:
ocmd:tanken(playerid)
{
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug (oder kein Fahrer).");
new car = GetPlayerVehicleID(playerid);
if(TanktGerade[car]) return SendClientMessage(playerid,ROT,"Du tankst schon!");
else if(Motor[car] == true) return SendClientMessage(playerid,ROT,"Du musst vor dem Tanken den Motor ausschalten.");
new ZuTanken = 100-Tank[car];
new preis = floatround(ZuTanken * BENZINPREIS);
if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid, -preis);
SendClientMessage(playerid, ROT, "Tanken wird gestartet.");
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
TanktGerade[car] = true;
tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
return 1;
}
mfg. ![]()
strval(inputtext) .....
Nicht wirklich ![]()
An den Callback OnDialogResponse wird eine Variable übergeben, die heißt "inputtext" und da steht alles drinnen, was man eingegeben hat ![]()
mfg. ![]()
Muss ich bei jedem #define für ein Dialog eine neue Zahl in die Klammer schreiben ?
Ja, aber die Klammern kannst du weglassen ![]()
Nun, es heißt:
#pragma unused params
Dennoch rate ich davon ab !
Lösche einfach params[] oben als Parameter von dem Befehl also anstatt:
ocmd:bla(playerid,params[])
//Nur schreiben:
ocmd:bla(playerid)
mfg. ![]()