Gutes Plugin, und spart einiges an Zeit wenn man am scripten ist.
Beiträge von xGreekz7x
-
-
Gute Maps!
-
Is akzeptabel für einen Release
7/10 -
Wenn du es nach dem Prinzip in meinem thread gemacht hast, brauchst du einfach nur alle 30 sekunden
an den Socket senden und die Antwort abfangen -
Wurde in der Konsole geschrieben:
public onSocketRemoteConnect(Socket:id, remote_client[], remote_clientid)
{
printf("\nIncoming connection from [%d:%s]", remote_clientid, remote_client);
return 1;
}public onSocketRemoteDisconnect(Socket:id, remote_clientid)
{
printf("\nRemote client [%d] has disconnected.", remote_clientid); // [id:ip]
return 1;
} -
Bei mir war es, sofern er die Antwort bekommen, hat, wurde er disconnected.
-
Den Socket beende ich nicht, da der Gameserver der Socket Server ist.
Ich disconnecte immer den Client indem ich die Antwort abgebe. -
Dadurch 'socket_sendto_remote_client' sendet er die antwort und der client wird disconnected.
Ich habe dies einfach mal als ganz kleines beispiel gemacht, da ich gefragt wurde.
Richtig gearbeitet habe ich damit noch nie.edit:// Die Absicherung gegen unendliche Socketverbindungen ist drin:
Zitatsocket_set_max_connections( _socket, 10 );
-
Sieht alles ganz gut aus, wie ich dir schon in Skype geschrieben habe, könntest
du evntl. auch mit Sockets arbeiten, anstatt nur mit dem Rcon Panel -
In der Funktion dataout, werden spalten ausgeben 'th und td'
müsstest einmal das anpassen und einmal den anfang und das Ende der Tabelle -
PHP
Alles anzeigenfunction GetServerID($Username) { global $Server; if($Server->isOnline()) { $List = $Server->getDetailedPlayers(); if(!is_array($List) || count($List) == 0){ return -1; } foreach($List as $Value) { if($Value['nickname'] == $Username) { return $Value['playerid']; } } } return -1; }
-
Wenn man die Daten aber direkt braucht, für z.b eine Überweisung, kann man das schlecht
mit HTTP Requests realisieren.
Wie schon oben steht, wurde dies auf Anfrage erstellt -
Nicht umbendingt, so kann man ne Antwort abgeben, wo bei man, beim RCON Api, dies nicht
tuhn kann, soweit ich das ausprobiert hatte. -
Statt dem else if, muss dann eine if Abfrage hin
-
Kleiner Tipp, wegen der orangenen Box:
input:focus, textarea:focus {
outline: 0 !important;
} -
Da ich gefragt wurde, wie man Funktionen über das UCP / Forum ausführen kann,
wollte ich hier mal ein kleinen Code Schnipsel releasen.
Es handelt sich um das Socket Plugin von BlueGPHP$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);socket_connect($socket, '127.0.0.1' , 13377);$message = "SPAWN:xGreekz7x";socket_send($socket, $message, strlen($message), 0);$buffer = socket_read ($socket, 1024);if( intval($buffer) == true ) echo "Der Spieler konnte gespawnt werden!\n";else echo "Der Spieler konnte nicht gespawnt werden, Fehler: ". $buffer ."!\n";$message_ = "GIVEMONEY:xGreekz7x:-1200";socket_send($socket, $message_, strlen($message_), 0);$buffer = socket_read ($socket, 1024);if( intval($buffer) == true ) echo "Der Spieler hat das Geld erfolgreich erhalten!\n";else echo "Fehler beim vergeben des Geldes: Error: ". $buffer ." \n";
PAWN Quelltext
enum playerData {
pCash
}PAWN Quelltext new pInfo[MAX_PLAYERS][playerData],
Socket:_socket;PAWN Quelltext main(){}PAWN Quelltext public OnGameModeInit()
{
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
_socket = socket_create( TCP );
if( is_socket_valid( _socket ) ) {
socket_set_max_connections( _socket, 10 );
socket_listen( _socket, 13377 );
}
return 1;
}PAWN Quelltext public OnGameModeExit()
{
if(is_socket_valid(_socket))
socket_destroy(_socket);
}PAWN Quelltext public onSocketReceiveData(Socket:id, remote_clientid, data[], data_len)
{
new command[20], ucp_command[34];
if( sscanf( data, "p<:>s[20]{}", command) )
return socket_sendto_remote_client(id, remote_clientid, "Fehlende Parameter!");
format( ucp_command, 34, "UCP_Function_%s", command );
CallRemoteFunction(ucp_command, "si", data, remote_clientid);
return 1;
}PAWN Quelltext forward UCP_Function_SPAWN( data[], remote_clientid );
public UCP_Function_SPAWN( data[], remote_clientid ) {
print("Call -> Socket -> Spawn");
new
userID;
if( sscanf( data, "p<:>{s[20]}u", userID))
return socket_sendto_remote_client(_socket, remote_clientid, "Fehlende Parameter!");
if( !IsPlayerConnected( userID ) )
return socket_sendto_remote_client(_socket, remote_clientid, "Dieser Spieler ist offline!");
if(SpawnPlayer(userID))
return socket_sendto_remote_client(_socket, remote_clientid, "1");
return socket_sendto_remote_client(_socket, remote_clientid, "Unbekannter Fehler!");
}PAWN Quelltext forward UCP_Function_GIVEMONEY( data[], remote_clientid );
public UCP_Function_GIVEMONEY( data[], remote_clientid ) {
print("Call -> Socket -> Givemoney");
new
userID, money;
if( sscanf( data, "p<:>{s[20]}ui", userID, money))
return socket_sendto_remote_client(_socket, remote_clientid, "Fehlende Parameter!");PAWN Quelltext if( !IsPlayerConnected( userID ) )
return socket_sendto_remote_client(_socket, remote_clientid, "Dieser Spieler ist offline!");
if( GivePlayerMoney(userID, money) )
return pInfo[userID][pCash] += money, socket_sendto_remote_client(_socket, remote_clientid, "1");
return socket_sendto_remote_client(_socket, remote_clientid, "Unbekannter Fehler!");
}
Viel Glück damit!
-
Was ist das denn für ein Müll ?!Man macht es mit CSS, sowie breadfish es schon gezeigt hat.
edit: // wobei man das Attribut alt noch hinzufügen sollte, um HTML Fehler ausm
Weg zu gehen. -
Du könntest mit Sockets arbeiten, Socket Plugin von BlueG
Ist relativ einfach, und per PHP kannst du dann einfach mit der IP & Port connecten, dein Teil absenden, und im PAWN Script
verarbeiten. -
background: transparent !important;
border: 0px !important; -
Echt gutes Design - das für Mods Factory!
Vielen vielen Dank!