Danke hätte nicht gedacht dass es so einfach ist, hab mir schon gedacht vielleicht "%s\n aber nein so einfach kann es nicht sein"
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Beitrag von Almaz202122 ()
Dieser Beitrag wurde von Eddy gelöscht (). -
Hey stehe etwas auf dem Schlauch
Code
Alles anzeigenenum InteriorEnum { Float:enterX, Float:enterY, Float:enterZ, Float:exitX, Float:exitY, Float:exitZ, InteriorID, InteriorVirtualWorld, InteriorLabel[40] } new IntInt[MAX_INTERIORS][InteriorEnum]= { {1481.0892,-1771.5193,18.7958,390.7682,173.7354,1008.3828,3,0,"Arbeitsamt LS"},//Hier das Komma {-2766.0854,375.5237,6.3347,390.7682,173.7354,1008.3828,3,1,"Arbeitsamt SF"},//Hier das Komma //DM - Fraktionen {2495.4299,-1690.7727,14.7656,2496.049804,-1695.238159,1014.742187,3,2,"Grove Street"},//Grove Street {2494.0928,-1463.9749,24.0249,318.564971,1118.209960,1083.882812,5,3,"Ballas Base"},//Ballas {2507.8247,-2020.4296,14.2101,2350.339843,-1181.649902,1027.976562,5,4,"Vagos Base"},//Vagos {-2447.1069,522.6022,30.3193,2454.717041,-1700.871582,1013.515197,5,5,"xyz Base"},//xyz {-1664.4521,1363.5939,9.8047,291.282989,310.031982,999.148437,2,6,"S.F Rifa Base"},//S.F Rifa {-2719.5955,-318.8723,7.8438,964.106994,-53.205497,1001.124572,3,7,"Triaden Base"},//Triaden {2597.4290,1900.2571,11.0312,-2640.762939,1406.682006,906.460937,3,8,"Yakuza Mafia"},//Yakuza {2570.4993,2289.0300,11.0700,-2640.762939,1406.682006,906.460937,3,9,"Russen Mafia"},//Russen {2173.8250,1403.3318,11.0625,-2640.762939,1406.682006,906.460937,3,10,"LCM"},//LCM {1922.6592,742.3882,10.8203,2543.462646,-1308.379882,1026.728393,2,11,"Hitman Base"},//Hitman Base //Staats - Fraktionen {1525.2130,-1677.9341,5.8906,246.783996,63.900199,1003.64062,6,12,"LSPD"},//LSPD {1172.4370,-1323.3219,15.4029,2319.714843,-14.838361,26.749565,0,13,"Sannis LS"},//Sannis LS {919.0253,-1252.2047,16.2109,322.197998,302.497985,999.148437,5,14,"Oamt LS"},//Oamt LS {1123.1027,-2037.0997,69.8937,1710.433715,-1669.379272,20.225049,18,15,"Regierung LS"},//Regierung LS {-2655.0125,639.6108,14.4545,2319.714843,-14.838361,26.749565,0,16,"Sannis SF"},//Sannis SF {-1606.2449,672.7736,-5.2422,246.375991,109.245994,1003.218750,10,17,"FBI"},//FBI {-1946.2510,518.0675,35.1719,322.197998,302.497985,999.148437,5,18,"Oamt SF"},//Oamt SF {-2649.6860,376.0897,6.1563,1710.433715,-1669.379272,20.225049,18,19,"Regierung SF"},//Regierung SF {2268.0261,2448.7905,3.5313,288.745971,169.350997,1007.171875,3,20,"LVPD"},//LVPD {2262.3103,2036.0692,10.8203,322.197998,302.497985,999.148437,5,21,"Oamt LV"},//Oamt LV {2482.4448,1326.1035,10.8203,2319.714843,-14.838361,26.749565,0,22,"Sanni LV"},//Sanni LV {2017.5769,1912.9623,12.3278,1710.433715,-1669.379272,20.225049,18,23,"Regierung LV"},//Regierung LV {2516.8901,2447.5735,11.0313,246.783996,63.900199,1003.64062,6,24,"Swat Base"}//Swat Base };
Ich möchte natürlich das manche "Interiors" nur für "bestimmte" Fraktionen betrettbar sind.
Ist es falsch die Fraktionseingänge/Ausgänge mit in diese "Enum IntInt" zu schreiben, damit ich die Abfrage erstellen werden kann ? oder,
müssen diese mit in das Fraktionsenum ?
Später soll ja auch noch ein "Haus & Biz System" erstellt werden, welche ebenfalls "Interiors" besitzen sollen, ebenfalls "Unter Vorraussetzungen" nur betrettbar, für einzelne Personen.
Oder wo ist mein Denkfehler ? -
@Ivory_Diamond Theoretisch wäre das umsetzbar. Kannst deinem enum theoretisch um zwei Variablen erweitern: interiorOwnerTyp und interiorOwnerID. Dann könntest du beispielsweise machen, dass interiorOwnerTyp = 1 einer Fraktion entspricht und interiorOwnerID dementsprechend als FraktionsID interpretieren. Dadurch hast du die Möglichkeit, die verschiedenen Fälle unter ein System zu kriegen.
-
@Ivory_Diamond Theoretisch wäre das umsetzbar. Kannst deinem enum theoretisch um zwei Variablen erweitern: interiorOwnerTyp und interiorOwnerID. Dann könntest du beispielsweise machen, dass interiorOwnerTyp = 1 einer Fraktion entspricht und interiorOwnerID dementsprechend als FraktionsID interpretieren. Dadurch hast du die Möglichkeit, die verschiedenen Fälle unter ein System zu kriegen.
Danke dir, werde es mal ausprobieren.
-
Also obwohl mir kein Error angezeigt wird beim Logout nichts in der Datenbank gespeichert, ist der string vielleicht zu lang?
Codemysql_format(handle, query, sizeof(query), "UPDATE cnrusers SET score = '%d', kills = '%d', deaths = '%d', admin = '%d', money = '%d', bank = '%d', team = '%d', skin = '%d', mute = '%d', ban = '%d', cop_level = '%d', cop_experience = '%d', crime_level = '%d', crime_experience = '%d', total_crimes = '%d', wanted_level = '%d', handy = '%d' WHERE id = '%d'"
Code[20:35:14] [DEBUG] mysql_format - connection: 1, len: 1028, format: "UPDATE cnrusers SET score = '%d', kills = '%d', deaths = '%d', admin = '%d', money = '%d', bank = '%d', team = '%d', skin = '%d'..." [20:35:14] [DEBUG] mysql_pquery - connection: 1, query: "UPDATE cnrusers SET score = '20', kills = '124', deaths = '1', a", callback: "(null)", format: "(null)" [20:35:14] [DEBUG] CMySQLQuery::Execute[] - starting query execution [20:35:14] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 3.202 milliseconds [20:35:14] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving
-
[20:35:14] [DEBUG] mysql_pquery - connection: 1, query: "UPDATE cnrusers SET score = '20', kills = '124', deaths = '1', a", callback: "(null)", format: "(null)"
Es sieht so aus als wäre der Query String zu klein, versuch den mal größer zu machen.
-
Es sieht so aus als wäre der Query String zu klein, versuch den mal größer zu machen.
Ich versuch das mal mit mehreren Strings weil wie ich in der Vergangenheit feststellen konnte bringt es nix die größe des Strings zu erhöhen
Fange gerade nen komplett neuen GameMode an also probier ich es morgen wenn ich soweit bin, dass ich viele Daten abspeichere -
Ja, das ist möglich durch die Funktion [wiki]SetVehicleVelocity[/wiki].
Unter OnPlayerUpdate könntest du probieren mit [wiki]GetPlayerKeys[/wiki] herauszufinden, ob er gerade beschleunigt oder bremst.Dann kannst du mit [wiki]GetVehicleVelocity[/wiki] auch die genaue Geschwindigkeit bestimmen und dann entweder schneller bremsen oder beschleunigen lassen, indem du die aktuelle Velocity in die jeweilige Koordinaten Richtung erhöhst.
Hier mal ein paar Funktionen, die dir evtl helfen:
C
Alles anzeigenstock GetVehicleSpeed(vehicleid) { new Float:x,Float:y,Float:z; GetVehicleVelocity(vehicleid,x,y,z); return floatround(floatmul(VectorSize(x,y,z),200.0)); } stock SetVehicleSpeed(vehicleid, Float:speed) { new Float:x, Float:y, Float:z, Float:a; GetVehicleVelocity(vehicleid, x, y, z); GetVehicleZAngle(vehicleid, a); x = floatsin(-a, degrees) * floatdiv(speed,200.0); y = floatcos(-a, degrees) * floatdiv(speed,200.0); SetVehicleVelocity(vehicleid, x, y, z); }
Könnte man mit deinen Funktionen schon bewirken das ein Auto 300kmh fahren kann?
public OnPlayerUpdate(playerid)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(ud == KEY_UP)
{
if(!IsPlayerInAnyVehicle(playerid)) return 1;
new vehicleid = GetPlayerVehicleID(playerid);
SetVehicleSpeed(vehicleid,GetVehicleSpeed(vehicleid)+250);
}
return 1;
}Also quasy ins auto einsteigen und dann SetVehicleSpeed(vehid,300)
Habs ja so verstanden das man immer die Velocity in die jeweilige Koordinate setzen muss,
macht diese Funktion SetPlayerSpeed das schon?
Oder wie kann ich diese hilfsmittel genau verstehen?
-
dann SetVehicleSpeed(vehid,300)
Richtig, das setzt den Speed.
Probieren geht über studieren
Teste es einfach und pass es so an, wie du magst
-
-
Moin die Länge der messages in SA:MP ist ja ziemlich kurz und das nervt ein wenig (144 Zeichen pro Zeile)
Wie schneide ich z.B. bei einer Nachricht von einem Spieler ab dem 141. Zeichen ab und packe den Rest in eine neue Zeile?
Wäre so deutlich angenehmer für die Spieler anstatt immer ganz kurze Nachrichten zu schreiben. -
-
Hat funktioniert, danke!
-
Wie kann man Abfragen, wie viele Waffen der Spieler auf der Hand hat?
-
Wie kann man Abfragen, wie viele Waffen der Spieler auf der Hand hat?
Versuch das mal:
new count;
for(new i; i <= 12; i++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, i, wep, ammo);
if(wep != 0) count++;
}
printf("%d",count); -
Hallo!
Was muss ich den machen um anstatt mit zb /pchat mit $ in diesem Chat schreiben zu können? Ich nutze ocmd.
MfG
-
Dafür kannst du einfach OnPlayerText verwenden.
public OnPlayerText(playerid, text[])
{
if(text[0] == '$')
{
//Im anderen Chat schreiben...
}
} -
Dafür kannst du einfach OnPlayerText verwenden.
public OnPlayerText(playerid, text[]){if(text[0] == '$'){//Im anderen Chat schreiben...}}
Danke, jedoch ist ir nicht gaz klar wie ich die machen soll das ich dann mit $ imchat schreiben soll. Muss ich ocmd:pchat machen und auf das verweisen?
-
Leider weiß ich nicht genau wie es bei ocmd ist, bei zcmd ist es aufjedenfall dann so:
cmd_pchat(playerid, text); -
Code
Alles anzeigenocmd:help(playerid, params[]) { if(!IsLoggedIn(playerid))return 1; { new strFind[64]; if(!sscanf(params, "s[64]", strFind)) { if(!IsNumeric(strFind)) { if(strlen(strFind) > 2) { new strTemp[512]; format(strTemp, sizeof(strTemp), "SELECT * FROM `server_help`"); mysql_function_query(MySqlConnection, strTemp, true, "sqlCheckHelp", "is", playerid, strFind); } else { SendClientMessage(playerid, COLOR_WHITE, "{AA3333}Der Begriff nach dem du suchst muss mindestens 3 Zeichen haben!"); } } else { new strTemp[512]; format(strTemp, sizeof(strTemp), "SELECT * FROM `server_help`"); mysql_function_query(MySqlConnection, strTemp, true, "sqlCheckHelp", "is", playerid, strFind); } } else { SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** HILFE *** {00CC00}Du kannst mit /help [Suchbegriff] die Datenbank durchsuchen."); } } return 1; } public sqlCheckHelp(playerid, find[]) { new strHelp[1500], strTitle[128], tempCount, strList[1024], dataID, tempHelp[1024], tempTitle[128]; format(strList, 1024, "Es wurden mehrere Einträge in der Datenbank gefunden!\nVerwende: /help [ID]\n\n"); if(!IsNumeric(find)) { for(new i = 0; i < cache_get_row_count(MySqlConnection); i++) { cache_get_field_content(i, "text", strHelp, MySqlConnection, 1500); cache_get_field_content(i, "title", strTitle, MySqlConnection, 128); dataID = cache_get_field_content_int(i, "id", MySqlConnection); if(strfind(strHelp, find, true) != -1) { tempCount++; format(strList, 1024, "%sID: %i - Titel: %s\n", strList, dataID, strTitle); format(tempHelp, 1500, "%s", strHelp); format(tempTitle, 128, "%s", strTitle); continue; } } if(tempCount) { if(tempCount > 1) ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Es wurden mehrere Einträge gefunden!", strList, "Schließen", ""); else ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Hilfe", tempHelp, "Schließen", ""); } else { SendClientMessage(playerid, COLOR_WHITE, "{AA3333}Wir haben in der Datenbank keinen Begriff dazu gefunden!"); } } else { if(cache_get_row_count(MySqlConnection)) { cache_get_field_content(0, "text", strHelp, MySqlConnection, 1500); cache_get_field_content(0, "title", strTitle, MySqlConnection, 128); ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Hilfe", strHelp, "Schließen", ""); } else { SendClientMessage(playerid, COLOR_WHITE, "{AA3333}Es konnte kein Eintrag zu dieser ID gefunden werden!"); } } return 1; }
Hey,
Habe folgendes Problem... Egal nach welcher nummer ich suche schmeißt er mir den 1. Artikel her.. Weiß jemand warum. Mysql R34