Hab das mal so gesehn udn gehrt das es Resourcensprander sei.
[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
-
-
Selbst wenn ein Aufruf einer non-public Funktion etwas schneller ist, als der Aufruf eines publics, ist der Unterschied so minimal, dass man das selbst bei tausenden Aufrufen pro Minute niemals merken wird. Ebenfalls am Speicherverbrauch.
Den Aufwand, da etwas zu verkomplizieren oder zu verbiegen, kannst du dir sparen, das macht keinen Sinn. Zudem wird es in den meisten Fällen auf Grund der Notwendigkeit gar nicht möglich sein.Nutze publics für Timer und Callbacks aus MySQL, und stock's (bzw. Funktionen generell, geht ja auch ohne stock) für simple Aufrufe.
-
Danke, für die Info!
Ich hab gestern mit Hilfe von @Javez_ einen Befehl gebaut und er funktioniert auch, aber ich hätte ihn doch gerne einfacher.
CMD:mapeditor(playerid, params[])
{
new option[10];
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, ROT, "Bitte benutze /login um den Befehl benutzen zu können.");
if(sscanf(params, "s[10]", option))return SendClientMessage(playerid, ROT, "USAGE: /mapeditor [ein | aus]");
if(strcmp(option, "ein", true) == 0)
{
SRC("loadfs mapedit");
return 1;
}
if(strcmp(option, "aus", true) == 0)
{
SRC("unloadfs mapedit");
return 1;
}
return 1;
}
Wie mache ich den Befehl so, dass man nur mit /mapeditor den Editor ein und ausschalten kann ohne ein bzw. aus dahinter?MfG
-
CMD:mapeditor(playerid, params[])
{
#pragma unused params
static bool:s_mapedit;
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, ROT, "Bitte benutze /rcon login um den Befehl benutzen zu können.");
if(!s_mapedit) SRC("loadfs mapedit");
else SRC("unloadfs mapedit");
s_mapedit = !s_mapedit;
return 1;
} -
Danke, klappt.
Einen Fehler hab ich noch.
[09/28/18 12:05:50] [INFO] changed log level from 'warning, error' to 'debug, info, warning, error'[09/28/18 12:05:50] [DEBUG] mysql_connect("213.202.255.90", "samp", "*****", "samp", 0) (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:153 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CHandleManager::Create(this=0x7506b0, host='213.202.255.90', user='samp', pass='****', db='samp', options=0x752378)[09/28/18 12:05:50] [INFO] Creating new connection handle...[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x74c528, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x760670[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x35ed020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x778b50[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x35ed020, connection=0x35ed020)[09/28/18 12:05:50] [DEBUG] CConnectionPool::CConnectionPool(size=2, this=0x74bb68)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x35ed020, connection=0x35ed020)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x37bb020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x7868a8[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x37bb020, connection=0x37bb020)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x37bb020, connection=0x37bb020)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x3985020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x7cdc70[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x3985020, connection=0x3985020)[09/28/18 12:05:50] [INFO] Connection handle with id '1' successfully created.[09/28/18 12:05:50] [DEBUG] CHandleManager::Create - new handle = 0x757728[09/28/18 12:05:50] [DEBUG] mysql_connect: return value: '1' (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:153 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] mysql_errno(1) (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:155 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CHandle::GetErrorId(this=0x757728)[09/28/18 12:05:50] [DEBUG] CConnection::GetError(this=0x74c528, connection=0x760670)[09/28/18 12:05:50] [DEBUG] CHandle::GetErrorId - return value: true, error id: '0', error msg: ''[09/28/18 12:05:50] [DEBUG] mysql_errno: return value: '0' (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:155 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x3985020, connection=0x3985020)Was ist da los?
Edit: Kann man sich irgendwie wärend dem Spiel aus dem RCON ausloggen?
-
Edit: Kann man sich irgendwie wärend dem Spiel aus dem RCON ausloggen?
https://wiki.sa-mp.com/wiki/RCON#RCON_Commands
Also nein
-
Einen Fehler hab ich noch.
Das ist kein Fehler, das sind nur Debug Meldungen, weil du alles zu MySQL-gehörige loggst.
-
Alles klar, danke für eure Hilfe.
-
Ich möchte eine Funktion haben die das Login blockiert. Jedoch sollten Admins connecten können. Wie kann ich von dem User aus der Datenbank sein Adminstatus abfragen?
-
Meinst du abfragen ob jemand RCON Admin ist? Dann IsPlayerAdmin.
Und sonst musst du es natürlich mit deinem eigenen Spielerenum umsetzen, dort hast du doch bestimmt das Adminlevel. -
Nicht Rcon admin.
Gibt es keine Möglichkeit nur das Adminlevel auszulesen?
Meine Spieler werden erst nach dem Login komplett geladen. -
Über denn spieler namen denn kannst du immer abfragen
-
Du machst einfach eine Query wie diese (musst du an deine Werte anpassen):
//OnPlayerConnect
mysql_format(handle,Query,sizeof(Query),"SELECT adminlevel FROM users WHERE Name = '%s'",GetName(playerid));
mysql_pquery(handle,Query,"OnCheckAdmin","d",playerid);forward OnCheckAdmin(playerid);
public OnCheckAdmin(playerid)
{
new alevel;
cache_get_value_name_int(0,"adminleven",alevel);if(alevel > 0) return 1;
else if(alevel == 0)
{
SendClientMessage(playerid, 0xFFFF00, "Der Login wurde administrativ deaktiviert.");
Kick(playerid);
}
} -
Code
Alles anzeigen#define MAX_GEBAUDE 0 enum GebaudeEnum { gName[128], Float:gEnterX, Float:gEnterY, Flaot:gEnterZ, Float:gEnterR, Float:gExitX, Float:gExitY, Float:gExitZ, Float:gExitR, gDesc[512], gInt, gVWorld, }; new gInfo[MAX_GEBAUDE][GebaudeEnum] = { {"Stadthalle Los Santos", 1209.4045,-1752.3353,13.5936, 40.7642, 384.808624,173.804992,1008.382812, 0.0000, "Du kannst das Gebäude mit "HTML_SERVER"/enter"HTML_WEIS"\n oder mit der Taste "HTML_SERVER"F"HTML_WEIS" betreten!", 3, 100}, };
Code
Alles anzeigenC:\Users\Marcel\Desktop\FunReallife\gamemodes\FunRoleplay.pwn(79) : error 001: expected token: ";", but found "-identifier-" C:\Users\Marcel\Desktop\FunReallife\gamemodes\FunRoleplay.pwn(80) : error 010: invalid function or declaration C:\Users\Marcel\Desktop\FunReallife\gamemodes\FunRoleplay.pwn(628) : warning 203: symbol is never used: "gInfo" C:\Users\Marcel\Desktop\FunReallife\gamemodes\FunRoleplay.pwn(628) : warning 203: symbol is never used: "gPickup" C:\Users\Marcel\Desktop\FunReallife\gamemodes\FunRoleplay.pwn(628) : warning 203: symbol is never used: "gText" Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 2 Errors.
-
new gInfo[MAX_GEBAUDE][GebaudeEnum] = {
{"Stadthalle Los Santos", 1209.4045,-1752.3353,13.5936, 40.7642, 384.808624,173.804992,1008.382812, 0.0000, "Du kannst das Gebäude mit "HTML_SERVER"/enter"HTML_WEIS"\n oder mit der Taste "HTML_SERVER"F"HTML_WEIS" betreten!", 3, 100},
};Da muss das , am Ende weg. Beim letzten Element musst du das , weglassen.
-
Das Komma ändern nix. Egal mit oder ohne Komma die gleichen Fehler.
Wie muss ich den MySQL Query schreiben um die Fraktion aus der Datenbank zu laden?
stock FraktionenLaden()
{
new Query[256];
mysql_format(Query, sizeof(Query), "");
return 1;
}
Datenbank: -
-
Ich muss LoginTimer[playerid] definieren, einfach new LoginTimer? Oder LoginTimer[MAX_PLAYERS]
Der Public heißt dann: LoginKick richtig? @Jeffry
new LoginTimer[MAX_PLAYERS]
//bei deinem Login
LoginTimer[playerid] = SetTimerEx("PlayerLoginTimer", 20000, false, "d", playerid);
//Nachdem er sich eingeloggt hat
KillTimer(LoginTimer[playerid]);
//Falls er zu lang braucht
forward PlayerLoginTimer(playerid);
public PlayerLoginTimer(playerid)
{
KickPlayer(playerid);
return 1;
} -
-