Gibts in PAWN nicht.
Du musst es via strcat,format oder ähnliches machen.
Beiträge von Goldkiller
-
-
Hammer *____*!
-
Hirn einschalten ? Das wurde dir schon erklärt.
Strings vergleichst du via strcmp.Sind die String identischs, wird 0 zurückgegeben.
if(strcmp(ParamMedic, "Medic", true) ==0)//Edit:
Abgesehen davon,ist noch einiges mehr bei dem Befehl falsch.
for(new i=0; i<GetMaxPlayers(); i++)
{
if(SpielerInfo[i][pFraktion] == 2)
{
return SendClientMessage(playerid, FARBE_ROT, "Error: Es ist kein Medic online!");
}
}
SendClientMessage(playerid, FARBE_BLAU, "Du hast einen Medic gerufen, bitte warte einen Augenblick!");
MedicCalled[playerid] = 1;
Das wird nicht so funktionieren wie du möchtest, für den "Error: Es ist kein Medic online!" - Teil. Du musst erst durch alle Spieler durchgehen und schauen ob dort irgendeiner von Medic ist. An hand einer Variable festlegen,ob ein Medic vorhanden oder nicht. Ist keiner vorhanden -> Nachricht,dass kein Medic online ist. Falls ein Medic vorhanden,nochmal mit einer Schleife durch alle Spieler gehen und Medic-Hinweis versenden ( Geht auch Anders,ist aber nicht unbedingt leichter für dich ). -
PM ?! Geschlossen.
-
new ParamMedic;
if(sscanf(params, "s", ParamMedic))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /service Medic");
ParamMedic muss auch ein String/Array sein ( [] ).
Eigentlich brauchst du die sscanf Zeile nicht,falls du nur einen String als Parameter hast. Dann könntest du nämlich auch direkt mit params arbeiten. -
Ja,logisch. Du erstellst ja auch lediglich ein 3DText.
Ein 3DText kannst du nicht an X Fahrzeuge heften,lediglich an eins. Du müsstest es genau so oft erstellen,wieviele Fahrzeuge du hast.
Denn es existiert auch nur 1x,nicht 5x.Es wird NICHT automatisch kopiert,wenn du es an mehrere Fahrzeuge heftest. -
Du siehst tatsächlich nicht,woran es liegt ? Du hast die Schleife BEVOR du dem Array fs irgendwelche Werte zuweist.
Zu diesem Zeitpunkt sind ( außer du hast davor etwas mit dem Array gemacht ) alle Werte 0.
Erst die Fahrzeuge erstellen und der Variable Werte zuweisen,DANACH die Schleife ...Du machst doch auch erste CreateVehicle und tunst es wenn du die vehicleid weisst. Nicht, erst tunen und danach die vehicleid herausfinden .
-
In deiner Usertabelle einen Wert für die IP als VARCHAR anlegen.
Beim registrieren die IP abfragen und den String ( IP ) in den Tabellenwert eintragen.Das sind mal Grundlagen,sowohl PAWN als auch MYSQL.
-
pX >= 2042.3666 && pX <= 1975.5316
Welche Zahl ist denn Größer als 2042 und gleichzeitig kleiner als 1975 ?
Kommt es mir nur so vor, oder schaffst du es auch Probleme selbstständig zu lösen :-O ? -
return 1; // <-- HIER
//Bauwagen
if(pickupid==bauwageneingang)
{
SetPlayerPos(playerid,761.412963,1440.191650,1102.703125);
SetPlayerInterior(playerid,6);
}
return 1;
}
Nach dem return wird der Code nicht weiter ausgeführt. Daher wird die Abfrage und alles danach NIEMALS ausgeführt,da zuvor die Funktion durch das return beendet wird.
Was du machen musst ? Das return entfernen.Zum anderen,
printf("bauwageneingang %d", ( bauwageneingang = CreatePickup(1318,1,1615.7266,-1681.4054,1269.7225,86.6050 ) );
Was wird ausgegeben?
Edit:
CreatePickup( (model, type, Float:X, Float:Y, Float:Z, Virtualworld)
Virtualworld stimmt bei dir nicht. Du hast dort wohl von /SAVE noch die Rotation ... trag einfach -1 ein.
http://wiki.sa-mp.com/wiki/CreatePickup -
User CrazyGamer gesperrt , Gründe sind klar.
Wegen 10€ User abziehen, peinliches Kind.
-
Ist ja peinlich,was man hier für Hilfe bekommt ...
if(response == 1)
{
/*
if(strfind(inputtext,"@")!=1)
{
SendClientMessage(playerid,Rot,"Falsche E-Mail. Es muss ein '@' enthalten sein."); //Die kommt immer
ShowPlayerDialog(playerid,DIALOG_TUTE,DIALOG_STYLE_INPUT,"Tutorial - 4","Gebe bitte deine E-Mail aus Sicherheitsgründen ein.","Fortfahren","");
return 0;
}
*/
// Wegen return 0 wird die Funktion beendet und die Abfrage von BlackAce wird nicht durchgeführt ...
if(strfind(inputtext,"@") != -1) //Laut BlackAce,ja mit !
{
SendClientMessage(playerid,Grün,"yeah");
format(SpielerInfo[playerid][Email],64,"%s",inputtext);
return 1;
}
}strfind != -1 fragt ab,ob der substring IRGENDWO im Text gefunden wurde !
-1 ist KEIN Treffer
Alle Zahlen von 0 bis X bedeuten,dass an dieser Stelle der substring gefunden wurde ( 0 , 1, 2 oder 324) .Nachhilfe:
strfindZitatReturns The number of characters before the sub string (the sub string's start position) or -1 if it's not found.
-
User + Doppelaccount gebannt.
Handelt sich um einen Betrüger. -
Hab ich doch geschrieben,
ZitatWerte in ' ' werden als völlständig angenommen.Es wird also versuch den Wert 'Tankstelle_kasse+50' ( falls tid 50 ist ) einzutragen. Das ist aber keine Zahl,richtig?
-
Meine Güte,schaut euch doch endlich mal die Syntax von SQL an.
format(query, 128, "UPDATE `Tankstellen` SET `Tankstelle_kasse` = 'Tankstelle_kasse+%d' WHERE `id` = '%i'",monay,tid);
Der Rote Teil funktioniert nicht.Willst du `Tankstelle_kasse` um X erhöhen,machst du es Anders.
Werte in ' ' werden als völlständig angenommen.Es wird also versuch den Wert 'Tankstelle_kasse+50' ( falls tid 50 ist ) einzutragen. Das ist aber keine Zahl,richtig?
format(query, 128, "UPDATE `Tankstellen` SET `Tankstelle_kasse` = `Tankstelle_kasse`+%d WHERE `id` = '%i'",monay,tid);Das der restlich Code von dir sowieso totaler Käse ist,sollte auch noch erwähnt werden.
/tanken ruft in einer Schleife Auftanken auf.Auftanken in einer Schleife TankstelleBezahlen auf ...//Edit:
[...]
format(query, 128, "UPDATE `Tankstellen` SET `Tankstelle_kasse` = 'Tankstelle_kasse+%s' WHERE `id` = '%i'",monay,tid);villeicht geht es aber sicher bin ich mir nur zu 30%
-
Habe mir mal die Funktionen des Tutorials angeschaut und gesehen,da gibts ja einige Fehler die wahrscheinlich zu "Memory Leaks" führen :\.
Du hast in einigen Funktionen kein mysql_free_result, glaube nicht,dass die Plugins das mitlerweile automatisch machen. Hab jedenfalls bei G-sTyLeZzZ nichts dazu gefunden außer :Zitatmysql_store_result
Note: You have to use this function before fetching the result. Also don't forget to free result when you don't need it anymore with mysql_free_result() or you will get "commands out of sync" errors.
Das fehlt nämlich bei mysql_CheckAccount und mysql_GetString. Komisch,dass es noch keinem aufgefallen ist. Der CPU oder RAM verbrauch hätte nämlich dadurch auf Dauer beeinflusst werden.
Hab mir das Tutorial nicht durchgelesen,sondern nur die Funktionen :p. -
Muss nicht,man kann.
Es geht ja um das Tag "Float".Der Kompiler kennt das Tag nicht,falls die Funktion deklariert ist nachdem sie zum ersten mal aufgerufen wird. Du bekommst dann eine Fehlermeldung.
Denn der Kompiler weiss zu diesem Zeitpunkt noch nicht,ob die Funktion nun einen Wert vom Typ Float ( Text,Text3D,bool usw. ) zurückgeben wird.ZitatDesktop\Untitled.pwn(7) : warning 208: function with tag result used before definition, forcing reparse
Quelltext dazu:
#include <a_samp>public OnFilterScriptInit()
{
new
Float:fFloat;
fFloat = myFloat();
printf("fFloat: %.1f",fFloat);
return 1;
}stock Float:myFloat() {
return 5.0;
}
Angenommen meine Funktion myFloat wäre jetzt durchaus komplexer und ich möchte sie nicht unbedingt ÜBER OnFilterScriptInit als komplette Funktion stehen haben,so kann ich mit einem forward dem Kompiler sagen,wie die Funktion aussehen wird ( mit Tag! ).
#include <a_samp>forward Float:myFloat(); // <- Ab hier weiss der Kompiler,dass myFloat einen Wert vom Typ "Float" zurückgeben wird. Daher bekommen wir keine Warnungen mehr.
public OnFilterScriptInit()
{
new
Float:fFloat;
fFloat = myFloat();
printf("fFloat: %.1f",fFloat);
return 1;
}stock Float:myFloat() {
return 5.0;
}
Ist hoffentlich verständlich :-O ? -
Nein,wird es nicht. Es geht um das "Tag", dass ist erst recht nicht vorhanden wenn dort statt stock lediglich public steht 0o.
http://forum.sa-mp.de/san-andr…ster-beispiel/#post566774
Hast die Funktion wohl leicht abgeändert,Excursius. -
Das Tag fehlt bei der Funktion. Kenne des Tutorial nicht,vielleicht fehlt es dort schon. Du willst nämlich eine Float-Wert zurückgeben,daher muss im Funktionskopf das auch so festgelegt werden.
stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[]) // <-- Hier fehlte Float:
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat;// <- sqlfloat hat ja das Tag "Float" ;).
}
Achtung,du musst die Funktion definiert haben bevor du sie benutzt,sonst bekommst du eine Warnung.
Ein Forward reicht aber auch,dann kannst die Funktion deklarieren wo du möchtest.
forward Float:mysql_GetFloat(Table[], Field[], Where[], Is[]); -
Dann lass es lieber mit MySQL. Es gibt zwar viele hier im Forum die versuchen langsam auf MySQL umzusteigen,von den Meisten erhälst aber keine Gute Hilfe in Bezug auf MySQL selber.
Falls du MySQL doch unbedingt nutzen möchtest,solltest du zumindest etwas Grundwissen darüber haben.Über Google findest da genug Informationen zu. Denn wenn du nicht mal weisst,wie deine Tabelle aussieht,wie soll man dir dann Helfen ? Dann kannst du dir selber nicht mal helfen ;).