@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.
[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
-
-
@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 -
Alles anzeigen
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
-
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
Du solltest die Fallentscheidung (ob Zahl oder nicht) bereits im Befehl help machen. Sollte dann eine Zahl sein, würde ich per WHERE Klausel die ID angeben. Derzeit lässt du ihm einfach den ersten Eintrag den er findet anzeigen, wodurch auch dein "Fehler" die logische Konsequenz ist.
-
Ich hab mit Hilfe von @LeonMrBonnie folgendes getestet.
public OnPlayerText(playerid, text[])
{
new message[128];
{
format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", SpielerDaten[playerid][pName], text);
ProxDetector(7.0, playerid, message, WEISS,WEISS,WEISS,WEISS,WEISS);
}
if(text[0] == '$')
{
ocmd_pchat(playerid, text);
}
return 0;
}Das utere istmein Versuch für den pchat was aber leidr nicht klappt.
Men Chatbefehl sieht so aus:
ocmd:pchat(playerid, params[])
{
new string[128], string2[128];
if(sscanf(params,"s[128]",string))return SendClientMessage(playerid, ROT,"% [Text]");
format(string2, sizeof(string2), "(( %s: %s ))", SpielerDaten[playerid][pName],string);
SendClientMessageToAll(ROT,string2);
return 1;
}
Wenn ich $Hi in Chat schreibe kommt was es eben ncht sollte im normalen Chat Hi und im anderen $Hi -
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]; mysql_format(MySqlConnection, 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]; mysql_format(MySqlConnection, strTemp, sizeof(strTemp), "SELECT * FROM server_help WHERE id = '%s'", strFind); mysql_function_query(MySqlConnection, strTemp, true, "sqlCheckHelp", "is", playerid, strFind); } } else { SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** ACCOUNT *** {00CC00}/animlist /stats /messages /hitsound /togdeath /skilltree /tog /handsup /pay /time /buy /scheine /piss"); SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** GENERAL *** {00CC00}/heiraten /muteinfo /gutschein /spawnchange /gps /dropweapons /letter /carradio /uninvite /einstellungen"); SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** GENERAL *** {00CC00}/support /accept /eject /usedrugs /contract /fill /service /taxis /music /races /leaders"); SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** GENERAL *** {00CC00}/selldrugs /seed /materials /sellgun /sellmats /activity /carpark /farmer /robres /showres"); SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** BUSINESS *** {00CC00}/business /sellbiz"); SendClientMessage(playerid, COLOR_WHITE, "{247BA6}*** HILFE *** {00CC00}Du kannst mit /help [Suchbegriff] die Datenbank durchsuchen."); } } return 1; }Jetzt findet er garnichts mehr..
Verstehe gerade nicht was du genau meinst?
//E: Problem gefunden habe das Problem wen mehrere Einträge gefunden werden steht das da:

dazu der public:
Code
Alles anzeigenforward sqlCheckHelp(playerid, find[]); 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; } -