klein bisschen ressourcneschonender, den wieso erstmal sachen durchführen, die eventuell nicht gebraucht werden?
new einsatz;
if(sscanf(params, "i", einsatz)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /cdice [Einsatz]");
if(!IsPlayerInRangeOfPoint(playerid, 5, 2187.9375,1676.8564,11.1101)) return SendClientMessage(playerid, COLOR_GREY, "Hier kannst du nicht Würfeln!");
if(einsatz >= 10001 || einsatz <= 999) return SendClientMessage(playerid, COLOR_GREY, "Der mindest Einsatz ist $1000 und der maximale Einsatz $10000");
new spieleraugen = random(6);
new computeraugen = random(6);
new string[128];
if(spieleraugen < computeraugen){format(string, sizeof(string), "Du verlierst mit einer %d gegen eine %d - Verlust: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, -einsatz);}
if(spieleraugen > computeraugen){format(string, sizeof(string), "Du gewinnst mit einer %d gegen eine %d - Gewinn: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, einsatz);}
if(spieleraugen == computeraugen){SendClientMessage(playerid, COLOR_WHITE, "Niemand gewinnt - es wurde ein Unentschieden gewürfelt!");}
return 1;
}
Nützliche Codeschnipsel
- breadfish
- Geschlossen
-
-
Stimmt, ich editiers mal Danke für den Hinweiß^^
-
klein bisschen ressourcneschonender, den wieso erstmal sachen durchführen, die eventuell nicht gebraucht werden?
new einsatz;
if(sscanf(params, "i", einsatz)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /cdice [Einsatz]");
if(!IsPlayerInRangeOfPoint(playerid, 5, 2187.9375,1676.8564,11.1101)) return SendClientMessage(playerid, COLOR_GREY, "Hier kannst du nicht Würfeln!");
if(einsatz >= 10001 || einsatz <= 999) return SendClientMessage(playerid, COLOR_GREY, "Der mindest Einsatz ist $1000 und der maximale Einsatz $10000");
new spieleraugen = random(6);
new computeraugen = random(6);
new string[128];
if(spieleraugen < computeraugen){format(string, sizeof(string), "Du verlierst mit einer %d gegen eine %d - Verlust: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, -einsatz);}
if(spieleraugen > computeraugen){format(string, sizeof(string), "Du gewinnst mit einer %d gegen eine %d - Gewinn: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, einsatz);}
if(spieleraugen == computeraugen){SendClientMessage(playerid, COLOR_WHITE, "Niemand gewinnt - es wurde ein Unentschieden gewürfelt!");}
return 1;
}
Wenn du es schon perfektionieren willst dann direkt die .pwn Datei mit und dann schreibs so:
new einsatz;
if(sscanf(params, "i", einsatz)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /cdice [Einsatz]");
if(!IsPlayerInRangeOfPoint(playerid, 5, 2187.9375,1676.8564,11.1101)) return SendClientMessage(playerid, COLOR_GREY, "Hier kannst du nicht Würfeln!");
if(einsatz >= 10001 || einsatz <= 999) return SendClientMessage(playerid, COLOR_GREY, "Der mindest Einsatz ist $1000 und der maximale Einsatz $10000");
new spieleraugen = random(6), computeraugen = random(6), string[128];
if(spieleraugen < computeraugen){format(string, sizeof(string), "Du verlierst mit einer %d gegen eine %d - Verlust: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, -einsatz);}
if(spieleraugen > computeraugen){format(string, sizeof(string), "Du gewinnst mit einer %d gegen eine %d - Gewinn: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, einsatz);}
if(spieleraugen == computeraugen) return SendClientMessage(playerid, COLOR_WHITE, "Niemand gewinnt - es wurde ein Unentschieden gewürfelt!");
return 1;
}mfg.
-
Paar mysql Dinge:
stock mysql_CheckIRGENDWAS(id)
{new Query[128],count;
format(Query, sizeof(Query), "SELECT * FROM `Tabelle` WHERE `id` = '%d'", id);
mysql_query(Query);
mysql_store_result();
count = mysql_num_rows();
mysql_free_result();
return count;
}Verwendung: if(mysql:CheckIRGENDWAS == 1)
Wenn es vorhanden ist 0 wenn nicht dies kann man z.B bei schleifen für ein Haussystem nehmen damit der server nicht ÜberladtDan ein Paar Float Dinge:
stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
{
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;
}
stock Float:mysql_GetFloatByInt(Table[], Field[], Where[], Is)
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat;
}stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}
Und andere Wert-Auslessachen
stock mysql_GetInt(Table[], Field[], Where[], Is[])
{
new query[128];
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();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
stock mysql_GetIntByInt(Table[], Field[], Where[], Is)
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
stock mysql_GetStringByInt(Table[], Field[], Where[], Is)
{
new query[128], Get[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(Get);
mysql_free_result();
return Get;
}stock mysql_GetString(Table[], Field[], Where[], Is[])
{
new query[128], Get[128];
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_row(Get);
mysql_free_result();
return Get;
}
stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}
stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(To, To);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}
stock mysql_SetIntByInt(Table[], Field[], To, Where[], Where2)
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%d'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}
stock mysql_SetStringByInt(Table[], Field[], To[], Where[], Where2)
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(To, To);
mysql_real_escape_string(Where, Where);
format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%d'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}Ihr müsst es eventuell etwas abändern
MFG Arendium
-
Wurde schon zig mal gepostet unteranderem auch von mir ausser das bei dir die Strings escapet werden.
LG RFT -
Aso sry
-
@ Arendium & RFT
Wenn ich dazu mal was anmerken dürfte, diese Variante querys per stock zu übertragen lassen ist schlecht, da dann jeder query einzeln geschickt wird un das bei sagen wir 100 Variablen das System denke ich mal zum leggen oder sogar zum crash bringen wird
Aus diesem Grund würde ich einfach euch empfehlen eine lange query zu schreiben, die alle Variablen beinhaltet...das hätte halt den Vorteil, dass nur 1ne Query gesendet wird und nicht 100
mfg.
-
@ Arendium & RFT
Wenn ich dazu mal was anmerken dürfte, diese Variante querys per stock zu übertragen lassen ist schlecht, da dann jeder query einzeln geschickt wird un das bei sagen wir 100 Variablen das System denke ich mal zum leggen oder sogar zum crash bringen wird
Aus diesem Grund würde ich einfach euch empfehlen eine lange query zu schreiben, die alle Variablen beinhaltet...das hätte halt den Vorteil, dass nur 1ne Query gesendet wird und nicht 100
mfg.
Hättest du dich informiert wüsstest du das es die ersten veröffentlichungen waren für Scripter die keine Ahnung von MySql haben.
Leute die ahnung davon haben nutzen ihr eigenes System oder nutzen ein anderes was veröffentlicht wurde =) -
Hättest du dich informiert wüsstest du das es die ersten veröffentlichungen waren für Scripter die keine Ahnung von MySql haben.
Das sollte allgemein eine Information für Neulinge in diesem Bereich seinmfg.
-
Mir war gerade langweilig und habe mal einen Lustigen Code geschrieben, der es möglich machen würde in einer SendClientMessage $variablen zu verwenden wie in PHP
Sähe dann so aus:
stock ScmEx(playerid, farbe, format[])
{
new z = strfind(format, "$", true);
if(z > 0)
{
new x[64], y;
x = _strtok(format, z);
y = (z+1);
z -= strlen(x);
strdel(format, z, y);
strdel(x, 0, 1);
new text[128];
strcat(text, "Gustav", sizeof text);
strins(format, text, z, sizeof text);
SendClientMessage(playerid, farbe, format);
return 1;
}
else return SendClientMessage(playerid, farbe, format);
}Hier mal ein Beispiel zur Anwendung:
ScmEx(playerid, rot,"Herzlich willkommen $name !");
In meinem Codeschnipsel habe ich eine konstante Variable die den Namen regelt, anstatt $name würde dann "Gustav" da stehen
und da ist der Punkt leider kann man das nicht als Include machen, da man den Wert der Variable herbekommen muss, bzw. sie übergeben muss und das erfordert mehr Zeilen Code als ein einfaches format
Naja, trotzdem viel Spaß damit
mfg.
Was man natürlich auch machen kann, um PVars einzubinden, einfach ein anderes zeichen definieren $ für normale variablen und § für PVars z.Bmfg
-
-
Was man natürlich auch machen kann, um PVars einzubinden, einfach ein anderes zeichen definieren $ für normale variablen und § für PVars z.B
mfg
Du hast das Problem offensichtlich nicht verstanden...Wie willst du denn (außer mit #emit) rausfinden, welchen Wert z.B. die Variable $name hat
mfg.
//Edit:
Ich muss diesen Beitrag editieren um keinen Doppelpost zu machen...So egal, ich möchte einen Code vorstellen um ein Auto zu vermessen !
printf("Breite: %.1fm",GetVehicleSize(411, 0));//prints: "Breite: 2.3m"
printf("Länge: %.1fm",GetVehicleSize(411, 1));//prints: "Länge: 5.7m"
printf("Höhe: %.1fm",GetVehicleSize(411, 2));//prints: "Höhe: 1.3m"stock Float:GetVehicleSize(modelid, var)
{
new Float:X, Float:Y, Float: Z;
GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_SIZE, X, Y, Z);
switch(var)
{
case 0: return X;
case 1: return Y;
case 2: return Z;
}
return -1.0;
}mfg.
//Edit²: bisschen anders geschrieben
-
GetVehicleModelInfo
Du hast das Problem offensichtlich nicht verstanden...Wie willst du denn (außer mit #emit) rausfinden, welchen Wert z.B. die Variable $name hat
mfg.
//Edit:
Ich muss diesen Beitrag editieren um keinen Doppelpost zu machen...So egal, ich möchte einen Code vorstellen um ein Auto zu vermessen !
printf("Breite: %.1fm",GetVehicleSize(411, 0));//prints: "Breite: 2.3m"
printf("Länge: %.1fm",GetVehicleSize(411, 1));//prints: "Länge: 5.7m"
printf("Höhe: %.1fm",GetVehicleSize(411, 2));//prints: "Höhe: 1.3m"stock Float:GetVehicleSize(modelid, var)
{
new Float:X, Float:Y, Float: Z;
GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_SIZE, X, Y, Z);
switch(var)
{
case 0: return X;
case 1: return Y;
case 2: return Z;
}
return -1.0;
}mfg.
//Edit²: bisschen anders geschrieben
Dafür extra ein Stock? - Total unnötig.
//Goldkiller: Bitte ... es heißt wenn überhaupt:
Dafür eine extra Funktion ?
//edit Jony:
Naja, darüber lässt sich definitiv streiten. -
Naja, darüber lässt sich definitiv streiten.
Über die Wichtigkeit dieser Funktion lässt sich ebenfalls streitenFalls man zum Beispiel nur die Höhe oder Breite oder Länge wissen will bekommt man auch nur den einen Wert und nicht alle 3
mfg.
-
Über die Wichtigkeit dieser Funktion lässt sich ebenfalls streitenFalls man zum Beispiel nur die Höhe oder Breite oder Länge wissen will bekommt man auch nur den einen Wert und nicht alle 3
mfg.
Da hast Du vollkommen Recht! - Es ist immer Ansichtssache, wie man etwas erstellt oder wie man zu seinem gewünschten Ziel kommt.
-
Mal wieder was hier rein schreiben, auch wenn es nichts großes ist:
Codestock file_get_contents(Pfad[]) { new File:f = fopen(Pfad, io_read), buffer[128]; fread(f, buffer); fclose(f); return buffer; }
Codestock file_set_contents(Pfad[], text[]) { if(fexist(Pfad)) new File:f = fopen(Pfad, io_append); else new File:f = fopen(Pfad, io_write); fwrite(f, text); fclose(f); return 1; }
Code
Alles anzeigen//Verwendung: printf("Der Zufalls Buchstabe lautet: %s",things()); //Die Funktion: stock things() { new ran = random(26), t[2]; switch(ran) { case 0: t = "A"; case 1: t = "B"; case 2: t = "C"; case 3: t = "D"; case 4: t = "E"; case 5: t = "F"; case 6: t = "G"; case 7: t = "H"; case 8: t = "I"; case 9: t = "J"; case 10: t = "K"; case 11: t = "L"; case 12: t = "M"; case 13: t = "N"; case 14: t = "O"; case 15: t = "P"; case 16: t = "Q"; case 17: t = "R"; case 18: t = "S"; case 19: t = "T"; case 20: t = "U"; case 21: t = "V"; case 22: t = "W"; case 23: t = "X"; case 24: t = "Y"; case 25: t = "Z"; } return t; }
//Edit:
Codestock copy(Pfad[], NewName[]) { if(!fexist(Pfad)) return 0; new buffer[128]; format(buffer, 128, "%s", file_get_contents(Pfad)); new File: f = fopen(NewName, io_write); fwrite(f, buffer); fclose(f); return 1; }
mfg.
-
-
-
Errechnet das Alter nach Angabe des Geburtsdatums als string:
Code
Alles anzeigenstock GetAge(Birthday[16]) { new D,M,Y,Age; getdate(Y,M,D); for(new i = strlen(Birthday); i > -1; i--) { if(Birthday[i] == '.') { new Tmp[32]; for(new o = i-1; o > -1; o--) { if(Birthday[o] == '.') { strmid(Tmp,Birthday,o+1,i); if(strval(Tmp)>=M) { strmid(Tmp,Birthday,0,o); if(strval(Tmp)>D) { strmid(Tmp,Birthday,i+1,strlen(Birthday)); Age = Y-strval(Tmp)-1; break; } } strmid(Tmp,Birthday,i+1,strlen(Birthday)); Age = Y-strval(Tmp); break; } } } } return Age; }
-
Ich hab mal zum Thema Alter berechnen auch einen kleinen code gschrieben welche schneller sein sollte als der von Hauk
und was er bestimmt auch ist.Verwendung:
Codeocmd:date(playerid,params[]) { new datum[30],string[40]; if(sscanf(params,"s[30]",datum))return SendClientMessage(playerid,-1,"Benutze /date [text]"); format(string,64,"Du bist %d",GetAge(datum)); SendClientMessage(playerid,-1,string); return 1; }
Code:
Code
Alles anzeigenstock GetAge(string[]) { new var0, var1, var2, Date[3], age; sscanf(string, "p<.>iii", var0, var1, var2); if(var0 > 31 || var0 <= 0)return 0; if(var1 > 12 || var1 <= 0)return 0; getdate(Date[0],Date[1],Date[2]); if(var2 > Date[0] || var2 < 1900)return 0; age = Date[0] - var2 - ((Date[1] < var1)? 1 : ((Date[1] == var1 && Date[2] < var0)? 1 : 0)); return age; }
Output bei
/date 10.9.2000
12/date 10.12.2000
11 -
Ich brauche gerade eine Möglichkeit herauszufinden wie lange ein Spieler schon auf dem Server ist und wollte dafür keine Timer benutzen, deshalb hab ich eine "GetPlayerTickCount" Funktion geschrieben, vielleicht findet einer ja Verwendung dafür:
Code
Alles anzeigennew y[MAX_PLAYERS]; public OnPlayerConnect(playerid) { y[playerid] = GetTickCount(); return 1; } stock GetPlayerTickCount(playerid) { return GetTickCount() - y[playerid]; }
Ich weiß nicht, ob es die beste Lösung ist, reicht für mich aber aus.
P.S. Es gibt die Zeit die ein Spieler auf dem Server ist in Millisekunden aus, mit folgendem kann man es gaanz leicht in Sekunden umwandeln.