Beiträge von xGreekz7x

    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;
    }

    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:

    Zitat

    socket_set_max_connections( _socket, 10 );

    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 BlueG


    PHP
    $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! ;)