Primarykey ist die UserID.
[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 PeterAnthony ()
Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: Spam (). -
Wobei sich hier immer empfiehlt, mysql_format zu verwenden und bei String statt %s, %e zu verwenden.. das ersetzt das frühere mysql_escape_string.. (MySQL Injection Vorsichtsmaßnahme.
-
Wobei sich hier immer empfiehlt, mysql_format zu verwenden und bei String statt %s, %e zu verwenden.. das ersetzt das frühere mysql_escape_string.. (MySQL Injection Vorsichtsmaßnahme.
oh eig habe ich auch immer mysql_format
war gestern müde -
Moin, ich habe eine spezielle Fragen und vllt. kann mir ja wer weiterhelfen.
1. Könnte sich ein Hacker in SAMP vor einer virtuellen Welt retten?
Szenario: Ein Spieler hat Aimbot und Money-Hack und wird von einem Teammitglied auf unbestimmte Zeit gebanned.
Mögliches Ergebnis: Der Spieler wird auf pIsBanned true gesetzt und in einer andere virtuelle Welt gesetzt, solange er banned ist.
Dort kann er kleinere gescriptete Features nutzen um sich zu beruhigen und die waren stärken des Server erkennen.
Ist das machbar? Wäre es dumm? Kann er sich einfach wieder in die ursprüngliche v-Welt zurück-porten? Eure Meinung Hilft mir weiter ^^.
Grüße
-
Das sollte umsetzbar sein, sonst kannst du zur Not ja auch einfach einen Check einbauen, der überprüft ob der Spieler in der richtigen virtuellen Welt ist und ihn dann wieder zurück in die richtige virtuelle Welt setzt.
-
1. Könnte sich ein Hacker in SAMP vor einer virtuellen Welt retten?
Nein. Virtuelle Welten sind Serverside, darauf hat man über Mods keinen Zugriff.
Wobei ich mir nicht sicher bin ob ein User in virtueller Welt A nicht auch Einfluss auf Spieler/Objekte in der virtuellen Welt B haben kann.
-
Könnte sich ein Hacker in SAMP vor einer virtuellen Welt retten?
Nein, können sie nicht, die virtuelle Welt wird nämlich (im Gegensatz zum Interior) komplett serverseitig verwaltet

Genauso sieht es beim Score (also dem Level) des Spieler aus (nur so Fun-Fact) xD
Wobei ich mir nicht sicher bin ob ein User in virtueller Welt A nicht auch Einfluss auf Spieler/Objekte in der virtuellen Welt B haben kann.
Auf Objekte können sie nicht verändern (auch serverseitig) (außer Position o.ä. abgreifen natürlich).
Solange die Vehicles / Spieler nicht in seiner virtuellen Welt sind, hat er da keinen Zugriff drauf

-
Beitrag von static ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: erledigt (). -
Load_Config wird leider nicht aufgerufen. Hat jemand dort einen Ansatz für mich?
Code
Alles anzeigenpublic OnGameModeInit() { static query[256]; mysql_format(myCon, query, sizeof(query), "SELECT * FROM `server_config`"); mysql_tquery(myCon, query, "Load_Configs"); return CallLocalFunction("Config_OnGameModeInit", "", ""); } forward Config_OnGameModeInit(); #if defined _ALS_OnGameModeInit #undef OnGameModeInit #else #define _ALS_OnGameModeInit #endif #define OnGameModeInit Config_OnGameModeInit static stock Load_Configs() { print("Load_Configs"); new row, count; if(!cache_get_row_count(row_count)) { print("Konfiguration >> Der Server kann nicht gestartet werden, da wichtige MySQL Tabellen fehlen!"); print("Konfiguration >> Der Server wird nun zum Schutz gestoppt!"); return SendRconCommand("exit"); } else { -
Load_Config wird leider nicht aufgerufen. Hat jemand dort einen Ansatz für mich?
Code
Alles anzeigenpublic OnGameModeInit() { static query[256]; mysql_format(myCon, query, sizeof(query), "SELECT * FROM `server_config`"); mysql_tquery(myCon, query, "Load_Configs"); return CallLocalFunction("Config_OnGameModeInit", "", ""); } forward Config_OnGameModeInit(); #if defined _ALS_OnGameModeInit #undef OnGameModeInit #else #define _ALS_OnGameModeInit #endif #define OnGameModeInit Config_OnGameModeInit static stock Load_Configs() { print("Load_Configs"); new row, count; if(!cache_get_row_count(row_count)) { print("Konfiguration >> Der Server kann nicht gestartet werden, da wichtige MySQL Tabellen fehlen!"); print("Konfiguration >> Der Server wird nun zum Schutz gestoppt!"); return SendRconCommand("exit"); } else {Load_Configs muss eine public funktion sein.
-
Beitrag von static ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Moin, habe ein Problem mit meinen Haussystem.
Häuser, wo in der DB bei Besitzer nichts steht, werden zwar geladen mit den jeweiligen Icon & TextLabel ,aber Häuser wo es einen Besitzer gibt nicht. Wo ist da der Fehler?
Code
Alles anzeigenforward LoadHouseExecute(playerid); public LoadHouseExecute(playerid) { new rows; new howner[128]; cache_get_row_count(rows); for(new i=0; i<rows; i++) { if(rows != 0) printf("LoadHouseExecute 1"); { new idh=GetFreeHouseID(); cache_get_value_name_int(i,"id",HausInfo[idh][h_ID]); cache_get_value_name(i,"hbesitzer",HausInfo[idh][hbesitzer]); cache_get_value_name(i,"hbesitzer",howner); strmid(HausInfo[idh][hbesitzer],howner,0,sizeof(howner),sizeof(howner)); cache_get_value_name_float(i,"h_x",HausInfo[idh][h_x]); cache_get_value_name_float(i,"h_y",HausInfo[idh][h_y]); cache_get_value_name_float(i,"h_z",HausInfo[idh][h_z]); cache_get_value_name_float(i,"hi_x",HausInfo[idh][ih_x]); cache_get_value_name_float(i,"hi_y",HausInfo[idh][ih_y]); cache_get_value_name_float(i,"hi_z",HausInfo[idh][ih_z]); cache_get_value_name_int(i,"h_int",HausInfo[idh][h_int]); cache_get_value_name_int(i,"h_world",HausInfo[idh][h_int]); cache_get_value_name_int(i,"hpid",HausInfo[idh][hpid]); cache_get_value_name_int(i,"hpreis",HausInfo[idh][hpreis]); new string[512]; if(!strlen(HausInfo[idh][hbesitzer])) { HausInfo[idh][hpid]=CreatePickup(1273,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Dieses Haus steht zum Verkauf\nKosten:%d$\nTippe /buyhouse",HausInfo[idh][hpreis]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } if(strlen(HausInfo[idh][hbesitzer])) { HausInfo[idh][hpid]=CreatePickup(1239,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Besitzer:%s",HausInfo[idh][hbesitzer]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } return 1; } } return 1; } -
Wo ist da der Fehler?
Steht denn dann in der Datenbank wirklich NULL, wenn keinem das Haus gehört?
Versuch es mal so:
C
Alles anzeigenforward LoadHouseExecute(playerid); public LoadHouseExecute(playerid) { new rows; cache_get_row_count(rows); for(new i,idh,string[128]; i<rows; i++) { idh=GetFreeHouseID(); cache_get_value_name_int(i,"id",HausInfo[idh][h_ID]); cache_get_value_name(i,"hbesitzer",HausInfo[idh][hbesitzer]); cache_get_value_name_float(i,"h_x",HausInfo[idh][h_x]); cache_get_value_name_float(i,"h_y",HausInfo[idh][h_y]); cache_get_value_name_float(i,"h_z",HausInfo[idh][h_z]); cache_get_value_name_float(i,"hi_x",HausInfo[idh][ih_x]); cache_get_value_name_float(i,"hi_y",HausInfo[idh][ih_y]); cache_get_value_name_float(i,"hi_z",HausInfo[idh][ih_z]); cache_get_value_name_int(i,"h_int",HausInfo[idh][h_int]); cache_get_value_name_int(i,"h_world",HausInfo[idh][h_int]); cache_get_value_name_int(i,"hpid",HausInfo[idh][hpid]); cache_get_value_name_int(i,"hpreis",HausInfo[idh][hpreis]); if(!HausInfo[idh][hbesitzer][0]) { HausInfo[idh][hpid]=CreatePickup(1273,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Dieses Haus steht zum Verkauf\nKosten:%d$\nTippe /buyhouse",HausInfo[idh][hpreis]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } else { HausInfo[idh][hpid]=CreatePickup(1239,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Besitzer:%s",HausInfo[idh][hbesitzer]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } } return 1; } -
Steht denn dann in der Datenbank wirklich NULL, wenn keinem das Haus gehört?
Versuch es mal so:
C
Alles anzeigenforward LoadHouseExecute(playerid); public LoadHouseExecute(playerid) { new rows; cache_get_row_count(rows); for(new i,idh,string[128]; i<rows; i++) { idh=GetFreeHouseID(); cache_get_value_name_int(i,"id",HausInfo[idh][h_ID]); cache_get_value_name(i,"hbesitzer",HausInfo[idh][hbesitzer]); cache_get_value_name_float(i,"h_x",HausInfo[idh][h_x]); cache_get_value_name_float(i,"h_y",HausInfo[idh][h_y]); cache_get_value_name_float(i,"h_z",HausInfo[idh][h_z]); cache_get_value_name_float(i,"hi_x",HausInfo[idh][ih_x]); cache_get_value_name_float(i,"hi_y",HausInfo[idh][ih_y]); cache_get_value_name_float(i,"hi_z",HausInfo[idh][ih_z]); cache_get_value_name_int(i,"h_int",HausInfo[idh][h_int]); cache_get_value_name_int(i,"h_world",HausInfo[idh][h_int]); cache_get_value_name_int(i,"hpid",HausInfo[idh][hpid]); cache_get_value_name_int(i,"hpreis",HausInfo[idh][hpreis]); if(!HausInfo[idh][hbesitzer][0]) { HausInfo[idh][hpid]=CreatePickup(1273,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Dieses Haus steht zum Verkauf\nKosten:%d$\nTippe /buyhouse",HausInfo[idh][hpreis]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } else { HausInfo[idh][hpid]=CreatePickup(1239,1,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],0); format(string,sizeof(string),"Besitzer:%s",HausInfo[idh][hbesitzer]); HausInfo[idh][htext]=Create3DTextLabel(string,COLOR_WHITE,HausInfo[idh][h_x],HausInfo[idh][h_y],HausInfo[idh][h_z],10,0,1); } } return 1; }Wird jetzt angezeigt, allerdings haut das mit den HausPickups noch nicht so hin. Also es wird nur das grüne Haus Icon gesetzt egal ob das Haus einen Besitzer hat oder ob nicht.
-
Habe gestern auf meinem Server SAMPCAC (sampcac.xyz) eingestellt, als ich heute den Server gerestartet habe, habe ich gemerkt, dass keine Bots connecten.
Kann mir dabei jmd helfen? Müsste irgendwie eine Abfrage einbauen, die die Bots auch ohne SAMPCAC connecten lässt.
Code:
Code
Alles anzeigenpublic ATTDEF_OnPlayerConnect(playerid) { new string[128], playerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playerName, sizeof(playerName)); format(string, sizeof(string), "[SAMPCAC] {FFFFFF}%s wurde vom Server gekickt. Grund: SAMPCAC ({EE5555}sampcac_client.asi{FFFFFF}) ist nicht installiert.", playerName); SendAdminMessage(0xEE5555FF, string); SendClientMessage(playerid, 0xEE5555FF, "[SAMPCAC] {FFFFFF}Dieser Server besitzt {EE5555}SA-MP Clientside AntiCheat{FFFFFF}. (SAMPCAC)"); SendClientMessage(playerid, 0xEE5555FF, "[SAMPCAC] {FFFFFF}Heruntergeladen kann dies von: {EE5555}www.SAMPCAC.xyz"); SetTimerEx("CAC_KickFix", 1000, false, "i", playerid); }bei OnPlayerConnect:
-
-
Leider kein Erfolg

-
Leider kein Erfolg

Das ist natürlich ein super feedback...
Cif(!CAC_GetStatus(playerid) && !IsPlayerNPC(playerid)) { new n[MAX_PLAYER_NAME]; GetPlayerName(playerid,n,MAX_PLAYER_NAME); printf("Kick: %s",n); SetTimerEx("ATTDEF_OnPlayerConnect", 1000, false, "i", playerid); }Stehen da wirklich jetzt im Server.log die Namen der Bots?
Rufst du ATTDEF_OnPlayerConnect evtl noch woanders auf?
-
Rufst du ATTDEF_OnPlayerConnect evtl noch woanders auf?
Ja, ich Dummkopf sollte vielleicht auch das Filterscript zum Connecten deaktivieren, wenn ich es mit in mein Hauptscript implementiere haha
Danke Kaliber

